fpvout / digiview-android Goto Github PK
View Code? Open in Web Editor NEWLive video out from your DJI FPV Goggles via USB.
Home Page: https://fpvout.com
License: MIT License
Live video out from your DJI FPV Goggles via USB.
Home Page: https://fpvout.com
License: MIT License
(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:
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.
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
If the screen has ratio 4:3 and from the goggles it is selected 16:9, the right side of the picture will be cut off.
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
PRs #57 and #63 introduce new UI strings that need to be translated to existing languages (German, Spanish, French and Chinese).
Having a GitHub action for building the apk will help people like me who don't have android development configured.
PR: #36
I'm a proofreader of betaflight Chinese, willing to help. Used to work on crowdin platform.
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.
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.
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 :
Everybody's input is more than welcome !
As per the title, toggling settings > camera > aspect ratio in the goggles will freeze the stream. Haven't investigated too much yet, but I've added some listeners to ExoPlayer to observe video size and nothing gets called there either until re-plug.
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?
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.
We must add links/credits to the other open source libraries used by the app.
Looks like the device/player cant hold up with the 60fps stream which results in high latency. Multiple people have this issue.
Example: https://www.youtube.com/watch?v=QA46zUFwxSQ
Its running on an Nokia 5.1 Plus on Android 10.
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
Hallo,
is it possible to use digiview with the dji Crystalsky Monitor? That could be a workaround to get get HDMI out
Is it possible to have an DJI Crystalsky version?
It is running Android 5.1, has nice bright screen and HDMI output. Ideal monitor for outdior use.
The font used for the "DigiView" logo and supporting text is "Gidolinya"
Source -> https://github.com/larsenwork/Gidole
The DigiView logo and close text should have a letter spacing of 0.22em
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.
E.g. China banned Google Play, there are some other app store here like HUAWEI app store or OPPO or Xiaomi etc.
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.
It would be nice to have all device support information in a single place.
Add Crashlytics and CustomLogger for better error tracking
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.
That's inspiring for anyone involved.
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
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!
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.
Goggles: V1
Device: Xiaomi A1
Android version: 9
Used cable: HOCO с usb c на usb c 3A PD (https://aliexpress.ru/item/32918721488.html)
25 mbit: Works
50 mbit: Works
Latency: ~200ms to +- 500ms
Goggles: V1
Device: Xiaomi Redmi 9 Pro
Android version: 10
Used cable: HOCO с usb c на usb c 3A PD (https://aliexpress.ru/item/32918721488.html)
25 mbit: Not Work
50 mbit: Not Work
Freezing all time
Goggles v1
Phone: oneplus 7 plus
Android 11
Video skips and will no run smooth
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.
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?
Amazing work btw, latency is so low and app functions really well!
I usually fly with 4:3 mode set in the goggles (to get the widest FOV) but on digiview it seems to stretch the incoming 4:3 stream into 16:9, filling my phone screen but distorting the image.
Thanks,
FailsafeFPV
would be neat to have a way to stream video out of the app (ex: youtube) using RTMP/RTP.
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.
Create a Settings Panel to manage:
I used to work on there, it has strings update automatically so that's really easy for all of us. Would like to hear from you!
25mbps only produces one image, then freezes
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.
Per title, the required values are
blue #4776e6
purple #8e54e9
from bottom left blue to top right purple
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)
Add your experience with specific devices here so people can see if it works or not. Add the following information:
*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.
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 :
MAX_SYNC_FRAME_SIZE = 131072
sampleTime = 10000
minBufferMs = 500
maxBufferMs = 2000
bufferForPlaybackMs = 17
bufferForPlaybackAfterRebufferMs = 17
MAX_SYNC_FRAME_SIZE = 131072
sampleTime = 14000
minBufferMs = 500
maxBufferMs = 2000
bufferForPlaybackMs = 34
bufferForPlaybackAfterRebufferMs = 34
MAX_SYNC_FRAME_SIZE = 131072
sampleTime = 9000
minBufferMs = 500
maxBufferMs = 2000
bufferForPlaybackMs = 10
bufferForPlaybackAfterRebufferMs = 10
MAX_SYNC_FRAME_SIZE = 30720
sampleTime = 200
minBufferMs = 32768
maxBufferMs = 65536
bufferForPlaybackMs = 0
bufferForPlaybackAfterRebufferMs = 0
Explore options for OTG software trigger between usb c devices. This removes the need for special otg cables.
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 ?
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?
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?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.