Giter Club home page Giter Club logo

digiview-android's People

Contributors

d3vl-jack avatar dukey32123 avatar dusking1 avatar fichek avatar fmatt avatar jlucidar avatar kieraneasdale avatar knutole avatar mavenius avatar omouren avatar squshy7 avatar vinayselvaraj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

digiview-android's Issues

Oneplus 6

Goggles: V2
Device: Oneplus 6 8gb ram
Android version: 10
Used cable: DELL USB to USBC cable
25 mbit: Works
50 mbit: Works
Latency: ~100ms to +- 300ms
Issue with aspect ratio. App stretches the image to the size of the display.

Fix the splash screen

PR #57 will remove the problematic splash screen image from light theme so it needs to be implemented again, this time to match the status icons size and placement and not be stretched.

Stats For Nerds like feature

Add a "Stats For Nerds" like feature in the settings that will render a text overlay with debug information on the live video feed.
This will help with supporting users, aswell as showing vital diagnostics information in just a screenshot.

YouTube (right click a playing video):
image

image

Feature request: compatibility with VR goggles

Awesome app! Congrats!

It would be great to be able to split the screen in order to use some VR headset like the Google cardboard. That way another person can espectate with goggles too, and it shouldn't be difficult to implement.

Cheers!

Multicast stream over UDP

the idea is to have a low latency stream solution so we can share the stream to other devices on the network.

it should use the raw stream from usb and send it through udp on multicast. Decoding happens on the receiving device, for optimal performances.

Enhancement: un-force landscape mode

As per title, default app behavior should follow global orientation settings, and as such allow auto rotate. This is mostly UX related as while I expect the vast majority of users to be using it in landscape, it is a jarring experience to have an app that's not a game force you to turn your phone before you are ready.

Not urgent, recommend for post-beta milestone.

Change license to GPLv3

I think it would be in the interest of this project to change the license from MIT to GPLv3.
Any fork of this app even if someone wants to make it commercial, should at the least be open source too and share their improvements with the community.

  • Little tricks, hacks and improvements are what spawned everything (someone sharing the magic packet). We can only advance this if we all share our knowledge.
  • Of course someone can just ignore any type of license, but setting one to e.g. GPLv3 which requires sharing sets the right "tone"/"spirit" for this project.
  • Your sister app FPV-DVCA is GPL licensed too and we might share core logic in the future ❤️
  • The only downside I see, is for anyone who wants to fork DigiView into a closed source app to commercialize it without contributing anything in return, which doesn't seem to be in the FPV communities best interest.
  • The GPLv3 license has worked very well for other successful FPV community projects: Cleanflight/Betaflight/INAV/Ardupilot

App stops when screen is goes to sleep, requiring a restart of the app

When the device screen turns off the following error is thrown

2021-05-13 21:02:58.872 21619-13521/com.example.ijdfpvviewer E/ExoPlayerImplInternal: Playback error
      com.google.android.exoplayer2.ExoPlaybackException: Source error
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:580)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:233)
        at android.os.HandlerThread.run(HandlerThread.java:67)
     Caused by: com.google.android.exoplayer2.ParserException: Loading finished before preparation is complete.
        at com.google.android.exoplayer2.source.ProgressiveMediaPeriod.maybeThrowPrepareError(ProgressiveMediaPeriod.java:243)
        at com.google.android.exoplayer2.source.MaskingMediaPeriod.maybeThrowPrepareError(MaskingMediaPeriod.java:154)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:965)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478)
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:233) 
        at android.os.HandlerThread.run(HandlerThread.java:67) 

Full Logcat Dump

Google Pixel 4 XL w/ v2 Goggles

Google Pixel 4 XL w/ v2 Goggles seem to work but is necessary to go to the USB setting and change it to controlled by device.

Also am only getting 2-3 frames per minute.

DigiView not working with Goggles V2 FPV & Vista 01.00.0600

Hi,
DigiView is not working to me unfortunately. It's not reacting on plug / unplug goggles, just showing black screen. Following all recommendations like temp off, 50 Mbps, OTG adapter (both testing devices see flash drive). One is Samsung Galaxy tab S2 Android 7, another one is MI 9T Pro Android 10. Dji Goggles V2 FPV version, firmware 01.00.0600. Please suggest what else I can try to make it working? Are there any known issues with 01.00.0600 version ?

Digiview App Stuck at "Waiting for Video"

I have been trying, unsuccessfully, to get the digiview app to work with my V2 goggles.

I have tried multiple USB C <> USB C cables 3 (all "data" cables). I have to go into my USB settings on the phone and switch from "charge only" to a full usb connection, but the app still just says "Waiting for video"

Anyone else have this problem? Any cable recommendations that are confirmed to be working?

Add IN-APP DVR

IN-APP DVR

(directly to the phone memory)

Why? You can share the footage instantly because is already in your phone, also turn off goggles and just look for the drone after the crash, review the banger matty with friends and much more. :D

Ideas:

  • choose where in the phone you want to have the footage
  • option to REC IN LOOP footage (oldest is deleted and replaced by the new one)
  • after turn on the REC IN LOOP this appears, choose how much memory from the phone you want to use in GB
  • choose the aspect ratio of the footage 4:3/16:9 or "fullscreen of the phone"
  • choose the quality of the DVR low/mid/high/raw
  • choose if you want to use a phone microphone to capture sound with the DVR (comments, screaming, cry :D )
  • option to have OFF/ON auto REC (as soon as you receive video record)
  • small indicator of active DVR, blinking red dot, in the upper left corner

Info:
The whole DVR setup is not editable (grey) till you turn on the DVR "switch" (basic android one)
After that, the REC button appear on the right side in the middle of the screen for manual rec on/off
Turning on REC IN LOOP (another switch in the setup), the REC button stays.
After turning AUTO REC, the REC on/off from the main screen disappear.

I expect most people just use DVR in the loop with auto REC like in googles or not use it at all to save battery and space and have just monitor.

How to show the menu:
double tap on the screen will reveal the small gear icon in the top right corner
in the menu will be all the option and also to donate and support the app :D

I love how the app is clean, sleek simple, connect and the rest is automatic. I would love to keep it that way.

Settings Panel

Create a Settings Panel to manage:

  • DVR Settings ( File Location, Auto Record , ...)
  • Telemetrie Settings (For late e. g. Crossfire telemetry)
  • About
  • Version
  • License

Tutorial Activity

Adding an activity that demonstrates the use of the app (e.g. the order of switching stuff on and plugging stuff in). Can be shown on first app opening. In my opinion thereby the app becomes more user-friendly and gets a professional look.

If this feature is desirable, I would create a pull request adding such an activity. Then we should also collect all the information that should be displayed in the short tutorial.

If it's not desirable, just close this issue.

Decoding latency and FPV_VR_OS

Hello,
I find this project really interesting as a developer,since I have an OS android app for digital fpv / vr link

I also have a repo that compares the decoding time for different streams on different smartphone HW (there can be a lot of differences,see
google/ExoPlayer#8514

I am wondering if you could create a .h264 recording of the "raw data you get via usb" so I can analyze it and perhaps provide a bit of details if and how you can decode the stream with low latency on android.
( I personally don't have a dji fpv system).

Greetings,
Constantin

Splash Screens

As a Continuation of #21 - here's the assets and designs for splash screens & screens to show information while not streaming

Icons -> goggles_icons.zip

Layout suggestions
demo screen - please connect goggles
demo screen - goggles disconnected
demo screen - connection lost

Otg software trigger

Explore options for OTG software trigger between usb c devices. This removes the need for special otg cables.

dji CrystalSky

Hallo,
is it possible to use digiview with the dji Crystalsky Monitor? That could be a workaround to get get HDMI out

Feature request: Stream recording (because SD card in Goggles are not working)

I tried out DigiView on a Samsung Tab A7 (WiFi), and it worked really well. But noticed that I could not record the flight to the SD card in the goggles. Is this expected behavior? It showed "no SD" as soon as I connect the cable to the Android device. I thought it is caused by the hardware interface, which may be the same for external storage and the internal SD card. If that is the case, I would love if the app would (optional) automatically store every stream to a storage location on the Android device. Is that possible?

Multiple instances of player if launched prior to connecting

Currently, if the app is open before plugging in the goggles, the auto launch relaunches the player, but keeps the old player in the background. This can be seen by backing out of the app, where you are returned to the original player still connected to the goggles.

Unclear if the background player is also encoding at the same time.

Support for FJI FPV drone?

Hey guys,
I have seen a video from Mad's Tech about the new Firmware Release for FW 01.02.0000 the DJI Googles V2 and the DJI FPV Drone
link
It added the ability for the dji fpv drone to also connect to the smart controller and D3VL also commented that the DJI Drone is now compatible with Digiview.

So I tried and got it to work with the Windows bat script and the live.fpvout.com website. Unfortunately I can't get it to work with the android app. It recognizes the Google but i could get any video in. The gui indicates that it is still waiting for the video. So is there anything I could try? Sadly I only have one device (Honor 10) to test it on, but this one should meet the Android requirements stated in the readme. And the googles are recognized as well.

Any suggestions what i can try? Or do the Android App need further improvement / updates to also work with the DJI Drone?

Add watermark / button to bottom left of the screen

Add a watermark to the bottom right corner of the screen as discussed in dev-chat.
Ideally this would act as a button for the menu of the app, and should be removable by the user if desired.

Assets attached -> digiview-feed-overlays.zip
I've added images with and without the text as this may want to be localized in the future.

examples:
digiview feed#1
digiview feed#5

Enhancement: default screen

I'm sure this is in the pipeline, just wanted to submit this to get it organized somewhere. A placeholder screen for when nothing is connected yet is needed. Especially when app is launched prior to connecting.

Device support (add your device here)

Add your experience with specific devices here so people can see if it works or not. Add the following information:

  • Goggles used (v1/v2)
  • Device brand/type
  • Android version
  • App version (alpha/beta/...)
  • Used cable
  • 25mbit working?
  • 50mbit working?
  • latency*

*How to measure latency? Use an online stopwatch and point the FPV cam at the screen. take a picture of the phone with the image of the stopwatch and calculate the difference.

Performance presets

As discussed in #16 and #43, performance of the streaming is not consistent across all device.

Having a way to choose different performance presets in the settings would help people find the right balance between latency and stability.

Here is the preset list I think might be relevant :

  • default
MAX_SYNC_FRAME_SIZE = 131072
sampleTime = 10000
minBufferMs = 500
maxBufferMs = 2000
bufferForPlaybackMs = 17
bufferForPlaybackAfterRebufferMs = 17
  • conservative
MAX_SYNC_FRAME_SIZE = 131072
sampleTime = 14000
minBufferMs = 500
maxBufferMs = 2000
bufferForPlaybackMs = 34
bufferForPlaybackAfterRebufferMs = 34
  • aggressive
MAX_SYNC_FRAME_SIZE = 131072
sampleTime = 9000
minBufferMs = 500
maxBufferMs = 2000
bufferForPlaybackMs = 10
bufferForPlaybackAfterRebufferMs = 10
  • legacy (might need to reimplement circular buffering to work)
MAX_SYNC_FRAME_SIZE = 30720
sampleTime = 200
minBufferMs = 32768
maxBufferMs = 65536
bufferForPlaybackMs = 0
bufferForPlaybackAfterRebufferMs = 0

RTMP stream out

would be neat to have a way to stream video out of the app (ex: youtube) using RTMP/RTP.

[Refacto] Extract core features to a separate library

So this is not a top priority at the moment, but It worth starting the debate.

The app is rather simple to understand today and the architecture is really straightforward. As the project grows, it's going to start being a mess. So we should at some point reorganize things a little bit and tidy up the code base.
One great Idea we talked about on Discord is to put all the internals of the project in a seperate library, so people can build apps on top of it. (like super fancy 8 simultaneous viewer with shiny overlay for races, etc...)

The DigiView app itself will then be built on top of the lib.

So we should discuss what we want to extract to this library, and what features the lib would host.
(maybe time to get the pen out and draw some neat architecture schemes ?)

A non exhaustive list :

Core

  • Usb Management (autoDetection/ authorization)
  • USB abstraction layers (InputStream / Output Stream)
  • Goggles Abstraction
  • Datasource splitter (so several stream consumers can access the stream at the same time)

Data Consumers

  • Exoplayer H264Extractor
  • Circular Buffering ?
  • MediaCodec
  • FFmpegKit ?
  • Direct Access

Extras (add UI components / High level classes for easy integration)

  • Exoplayer
  • MediaPlayer ?
  • DVR
  • RTMP

Everybody's input is more than welcome !

Add OSD?

I could use the option that would display the OSD - We have a verity of platforms used for Search and Rescue and a display that shows the GPS coordinates would take pressure off the pilot and help speed thing up for ground crews.

Thanks

not working

Goggles v1
Galaxy Tab a
Android 7.1.1
micro usb otg to usb A - usb c to usb a cable
25mbit working - no
50mbit working - no

Auto-Rec Goggles

DJI Goggles V2 - Caddx Vista Nebula Pro
Samsung and other smartphones

Once the glasses are connected to DigiView, the video can be seen perfectly, but the automatic registration is interrupted in the glasses and does not resume until the glasses are restarted.

This creates a lot of problems because I use automatic recording to insert it into videos.

Why does this happen? Does it happen to you too?

localization?

I'm a proofreader of betaflight Chinese, willing to help. Used to work on crowdin platform.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.