Thanks to a tip of my reader, I found a relatively cheap (69Eur) Android box with HDMI input and record ability. I thought that it should be possible not only to record the HDMI input but also to stream it in realtime so I ordered one for experimenting.
Disassembly
The device came without any box, just in bubble foil but it doesn’t matter to me if it keeps the cost low. You can find functional review of the device on cnx-linux page.
Bottom side of PCB:
Upper side with heatsink:
Upper side without heatsink:
As you can see from the pictures, device uses MSO9180D1R SoC for which I couldn’t find any datasheet. The traces from HDMI input go directly to the SoC which is a good sign, that the signal is not converted to analog form (at least outside the SoC).
First steps
HDMI recording app is available directly from main menu and offers recording in MP4 or TS (mpegts) format, both with H264 video and AAC audio. MP4 format is not suitable for streaming (at least not until the recording is finished) because the metadata of file is written only after the recording is finished. On the other side, TS is ideal for streaming because data is segmented into properly formated 188bytes packets.
To gain shell access, I installed SSH Server from Google Play which worked without any problems. After connecting, I was easily able to gain root access to device because the devices comes pre-rooted from factory.
$ ssh danman@10.0.0.116 -p60722 The authenticity of host '[10.0.0.116]:60722 ([10.0.0.116]:60722)' can't be established. DSA key fingerprint is 12:45:aa:63:e9:c2:20:f0:e2:f9:dc:0a:b4:25:95:b8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[10.0.0.116]:60722' (DSA) to the list of known hosts. danman@10.0.0.116's password: u0_a58@lemon:/ $ su root@lemon:/ #
Ok, let’s see what do we have here:
root@lemon:/ # cat /proc/cpuinfo Processor : ARMv7 Processor rev 1 (v7l) processor : 0 BogoMIPS : 2189.31 processor : 1 BogoMIPS : 2189.31 processor : 2 BogoMIPS : 2189.31 processor : 3 BogoMIPS : 2189.31 Features : swp half thumb fastmult vfp edsp neon vfpv3 tls CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x4 CPU part : 0xc09 CPU revision : 1 Hardware : napoli Revision : 0020 Serial : 0000000000000000
First stream
Ok, my goal was to stream live from HDMI so I thought it might be possible to just pipe tail of recorded TS file to network (preferably multicast) and see if it works. So I installed BusyBox Free from Google Play (to get nc utility). It showed up, that nc from busybox supports only TCP connections (and of course the segmentation to TS packets won’t be good) so this will not be a way.
After a while, ffmpeg came to my mind: you can specify output packet sizes there and in general it’s designed exactly for streaming/encoding and I have seen it used on Android before. So I googled ffmpeg precompiled binary, downloaded it and put it on my USB key to run it from shell.
First, I started VLC on my computer like this:
vlc udp://@239.255.0.1:1234
Then I started recording in “HDMI IN” application (which created recording file in /sdcard/HdmiRecorder/video20151227161832.ts) and then run ffmpeg in device shell:
./ffmpeg -re -i HdmiRecorder/video* -vcodec copy -acodec copy -f mpegts udp://239.255.0.1:1234
The result is here:
The stream played correctly. Great!
But when I stopped vlc, and tried to join the stream again, vlc was unable to start decoding video (audio was playing fine). I did a short analysis of the .ts file and found out, that it contains h264 metadata (SPS, PPS, more on this here) only in the beginning of the file and if these are not received by vlc, it doesn’t know how to decode the h264 bitstream.
I tried to to experiment with option
-bsf:v h264_mp4toannexb
but it was throwing some strange errors. I also tried to compile latest ffmpeg on my own (from https://github.com/WritingMinds/ffmpeg-android-java ) but it didn’t help, so I took it from another end: I tried to decompile the application.
Analyzing recording application
In Android, all apps are stored as .apk files in system folder. HDMI IN recording app is not an exception (/system/app/ZidooRecord.apk), so I downloaded it to my computer and decompiled it using http://www.decompileandroid.com/ (great tool, thanks to the author).
After some reading of the code and googling, I found out, that zidoo (maker of the app) has user forum and even more, they provide sources of this app on github (https://github.com/zidootech/zidoorecorder) !
Side note: To avoid confusion here, Zidoo X9 is product from Zidoo company built on top of the same HW platform from company called Mstar who developed the SoC. So Tronsmart is the same HW platform with the same software just sold under other name/company.
Those github sources include binary library integrated with Android using NDK which allows recording from HDMI. The binary is very briefly documented and sources are available only to distributors with signed NDA so I have struggled with cutting the sources to minimum and compiling it myself. But finally I succeeded building my own recording app. https://github.com/danielkucera/ZidoStreamer
I was hoping that I’ll be able to change the recording format so it contains correct extradata before each keyframe but it wasn’t possible (more info here). After start, my app successfully started recording to file and started ffmpeg which streamed it to network but this was little improvement compared to where I was with original app, I still had to catch the beginning of the stream otherwise the stream didn’t work. So I came back to experiment with ffmpeg.
Working ffmpeg command
After careful reading of ffmpeg documentation (https://www.ffmpeg.org/ffmpeg-bitstream-filters.html#dump_005fextra) and some experimentation I found a command which makes working stream:
tail -f -c 1000000000 HdmiRecorder/* | ./ffmpeg -i - -vcodec copy -acodec copy -bsf:v dump_extra -f mpegts udp://239.255.0.1:1234
The point is: tail starts to read recorded file from beginning (-c 1000000000) and keeps reading on (-f) while piping to ffmpeg which reads from stdin (-i -), create correct extradata before each keyframe (-bsf:v dump_extra – this is the key!) and stream to network as mpegts stream (-f mpegts udp://239.255.0.1:1234)
What we have now and where we go
So for now, we have a working android app that starts recording from HDMI input using proprietary binary and working ffmpeg command to create playable stream.
My target is to create app which will be able to start recording without that binary (it should be possible according to some tests I did), set different bitrates/resolutions, omit the recording to file (use just fifo file to avoid flash memory speed bottleneck and limited size – done some successful tests, just need to fix bugs) and allow different output stream types, e.g. rtmp, udp mpegts unicast, tcp mpegts unicast, rtp etc. (this all can be handled by ffmpeg, just needs to be correctly setup). So for now, I have “proof-of-concept” and a plan.
If you are interested in this or want to help, feel free to comment, fork, push commits, whatever.
Bye for now, watch my blog/repo for progress report.
Hi danman,
great article.
It is very helpful that you are describing the way, how did you come to the conclusion.
I am very interested in the target app.
When you put in on google app store, i would buy it. 🙂
There are many users who want to have such an app.
Because, timeshift is not possible with the zidoo app.
And with a stream, i can stream to my htpc and use for example kodi and a timeshift plugin.
Alternatively: it is possible to stream to 127.0.0.1 and then use timeshift with the installed version of Kodi and a timeshift plugin on the box or is the box too slow ? (So that the app works in background?)
Nice greetings André Lehrmann
yes, this should be possible.
Hi,
this sounds very interesting.
With your modified zidoostreamer, is HdmiRecorder/* the stream from when you start the streamer?
So when you pipe that into ffmpeg, ffmpeg will start streaming it from the beginning of that ‘recording’, rather than ‘live’ what is coming in through the HDMI, or am I seeing that wrong?
with tail, it quickly reads the whole file and dumps it to network through ffmpeg and then waits for new data and sends them as soon as they arrive, so the stream is shifted as little as possible
Hi there,
Great project and post.
I’m quite interested on following your progress on this but can’t seem to find some kind of “follow” button on your blog.
By the way, the photos you posted aren’t showing up, at least on my side.
Keep it going.
Grettings
João (Portugal)
PS. came across your post/blog through this link
http://hackaday.com/2016/01/06/android-set-top-box-lets-you-stream-and-record-via-hdmi-input/
Hi
thanks for the post. I didn’t know the devices that could do recording from hdmi got this cheap.
Just ordered one for myself.
I’m not an expert at this but looking at your pastebin dump it looks likes the hdmi in registers as “Linux video capture interface: v2.00”.
This should mean that you don’t need the recording app and can directly use ffmpeg “ffmpeg -i /dev/video0” to grab the video from the input.
Most likely there won’t be any audio but this can be fixed with “ffmpeg -f alsa -i hw:0,0 -f v4l2 -i /dev/video0”
Hope this helps
As far as I remember, I didn’t see any video* device in /dev/ .
@rbhawk @danman
I have the X9S (zidoo), which doesn’t have the /dev/video0 device but it does have a /dev/video250. After more investigation in the filesystem (/sys/devices/virtual/video250 etc) it seems that that is the input device.
However, using ffmpeg in Termux I can’t access the device as it seems that it’s a build without v4l2 support.
Excellent thanks, just decided my next toy purchase.
Next cool feature would be an Ambilight decoder for the HDMI input which plays nicely with software that does similar in Kodi?
+1 Another reason to use Kodi with Boblight ambilight plugin.
Images don’t show up because the default entry into the site redirects to https:// version but the image URLs are hard-coded to plain http, so won’t display. Once you’re in the site just remove the ‘s’ from the https and all is good, which confirms.
thanks, fixed.
Have you tried streaming the ts files with mplayer. I think you probably wouldn’t have to do the workaround using mplayer.
Reason:
While doing a project a couple years ago, I found ffmpeg terrible for streaming, but mplayer was fantastic for reading, recording, and playing ts streams.
Is there anyway to make this output via a dlna server?
Means I could watch live TV upstairs without needing extra cabling
Do you know if there is any delay between the input and output streams? I would love to use this as an easy recorder for my computer but I do not want any additional delay between my desktop and monitor.
So it would be sit between my desktop and monitor. And record/output to either network or a separate attached drive. What I am looking for is 0 lag. I know that might be a tall order.
Get a HDMI splitter to record one and use one direct to monitor.
Love to see this supported inside Kodi / XBMC.
Maybe it could be added by porting this into a PVR client addon? Then it could be accessed and controlled like Live TV in Kodi. See:
http://kodi.wiki/view/PVR
https://github.com/kodi-pvr
http://forum.kodi.tv/forumdisplay.php?fid=136
As this is android can you just miracast the display when it is showing the hdmi input, to a wireless display?
Could you use this to capture video from a dslr with hdmi out, process the video in an opencv application (preferably loaded on the set top box), and output the results streaming over a wifi network?
Would this box be able to directly stream to the likes of twitch or youtube live?
I’m also interested in this, but I guess that yes. Can test it tomorrow if I won’t forget 🙂
I managed to start live streaming to youtube. Available in latest commit. Result here:
http://www.youtube.com/user/danmanmgm/live
Thank you for your post!
A friend just linked me to the device on the ebay and then linked me to your post about it. I happened to catch your youtube live stream just now while it was online and it ran great at 1080p!
Though I’m curious if you have any thoughts on streaming from a Windows machine through the Pavo M9 device to Twitch.tv?
Yes, twitch also uses rtmp for ingesting streams so it should work too.
Looks good. Will grab one later on in the week.
Is there any way that the box can add content to the stream, or is it directly encoding from the HDMI input with no opertunity to do overlay graphics and text or similar to the stream?
according to this: http://bigflake.com/mediacodec/ it should be possible. but right now I’m working on basic functionality and this is far more beyond. But you are free to contribute 🙂
cool! I have been reading the source code of the zidoo recorder… I want to add recurring scheduling to it and eventually adding streaming.. It’s cool to see you have made a lot of progress and you seem to have much more experience with streaming than me .. will follow the progress of the zidoo streamer and will try to contribute if I find something interesting
I just need to wait for my pavo m9 to arrive.
Hey man!
I am doing some tests with your source code: https://github.com/danielkucera/ZidoStreamer
but so far, no luck 🙁
I get a IOError with java.io.FileNotFoundException: mkfifo
I will debug it, but choose to ask to you first if I have to set up something else before it works!
Thanks!
got it… the assets folder is missing in the source. Got them from the signed apk!
Sorry for that. I’ll include it in next commit.
and yesterday I made it possible to record with native Android classes so you don’t need to init recording with jni library and you can set many more parameters in MediaRecorder class.
hi, many thanks! for your post and basic insides of this little gadget. I have successfully used two of these boxes as a user-simple solution to stream live HD videos across the network. After some hacking and testing i have managed to stream in the real time without need of ffmpeg nor any other natives .. just regular MediaRecorder, MediaPlayer and java. In essence the transmitter (MediaRecorder) is providing the encoded TS data to the receiver (MediaPlayer) using extremely lightweight http-like server, where the receiver is “downloading” the A/V file of a infinite length.
Ahoj. Ak to nie je tajne, mohol by si niekde zverejnit zdrojaky. Inak fajn napad s tym http.
hi, in english for other public out there. The application is working prototype and “as is”. After launch, there are two options to choose: Transmit and Receive. Click Transmit from where you want to stream and click Receive where you want to view live stream. After that, applications will automatically negotiate and establish network connection and start playback when located in the same network. Sources here: http://uloz.to/xsivHBrj/videobox-2016-02-14-zip
enjoy 😉
Hi Tomas, Danman! Great work! Thanks to you both!!! Here is few questions:
to Danman: will you rewrite code as Tomas offer? With using internal android class, without no need of ffmpeg? Is it possible? Also, could you add ONVIF support, so another devices could simple find our little broadcaster and gets picture from it?
to Tomas: the app work like a charm, but is it possible to add buffer length changing control? Then i can’t install this apk to android 4.4 and 5.0 smartphones, but it installed correctly on android stick with 4.1.2, where could be a problem?
Is this app support multiply receivers? Also, how could i get stream on another devices? For example, winPC or Mac? Is there VLC string to show it up?
Thanks in advance for your great help!
P.S.: Could you place VideoBox sources to github too?
And how about h.265/hevc? As i see from specs, our box support decode of this codec only? Or encodig also supported?
Hello, this app was not ment to be working end-user software solution. I have created this piece of software in order to explore capabilities of the Pavo M9, to live stream A/V media acquired from the HDMI input over the local network. The provided sources in the given form are highly deppendent on the Pavo M9 HW/SW platform .. at least for recording.
The app may not be possible to install to another Android platforms due to missing built-in “android.uid.system” user account (defined in the app manifest), which is apparently required in order to reach the Pavo M9 HW.
My requirements were to use as minimum buffering as possible (no delays), but yes, some extended buffering can be added. Same as the other app preferences, which are at this moment hardcoded. The A/V stream can be played using VLC or any other media player which supports network streaming at address: http://[pavo-m9-ip]:12345/
At this time, only one host may connect to the streaming server. In theory, this may be possible to change, but this do require parsing of the A/V stream in order to properly initiate the streaming session when a host join in middle of the streaming (where the A/V stream no longer contains the metadata).
Streaming is done using AAC/H264 codecs both packed in the MPEG-TS container, which is apparently the only easy format, that Android can record and play for network streaming see: http://developer.android.com/guide/appendix/media-formats.html
You must understand, that the Android platform provide limited resources and possibilities to record and play the A/V content. Android by default does not provide any layer to transport the A/V content across the network. This is done using some “clever” exploitation of the http protocol. You can use some native helper applications (as the Danman did), but i wanted to avoid it.
Hi Tomas,
Thanks for the app and the work! just two comments on my side:
first I do not why but the config does not open when I select it. Have you experienced the same?
secondly, I can open the stream from VLC on my PC but I have another tv box from my internet provider and VLC does not have the option to define the stream to read. What other app could you advise me to read the stream from another tv box that is not the tronsmart?
thanks for your help
ok, for the stream player I answered myself: it works with MX player. I only have a small bug as a blinking strip appears under the image but it is still working well else
Hello,
Can somebody describe little bit more about how app can became working.
Already I installed signed.apk to my Pavo m9. In application settings I found only option for (mp4 or ts) , address.
I choose ts and udp://239.255.0.1:1234
After that i try to connect with VLC but no success.
Any siggestions ?
try udp://@239.255.0.1:1234
Hello,
There are no success with any multicast address. Until now I get some success only with ffmpeg, it’s play video and sound but there are frames stutter.
My PC – VLC udp://@172.168.20.232:1239
Pavo M9:
HDMI IN start recording as TS
./ffmpeg -re -i HdmiRecorder/video* -vcodec copy -acodec copy -f mpegts udp://172.16.20.232:1239
With ZidoStreamer I cannot get working with any address. Probably I missing something.
This is what I’m doing
Start VLC on my PC
Start ZidoStreamer on Pavo M9 and click Menu Button on remote control , There I can see 2 settings: Video type and Streaming address. I chose TS for video and udp://239.255.0.1:1239 or udp://172.16.20.232:1239 . I tried with @ before the IP and there no difference.
Any suggestions ?
Hello Dobril,
it would be nice to see logcat (http://developer.android.com/tools/help/logcat.html) logs from the device but I suggest you following procedure:
1. save settings
2. restart device
3. start ZidoStreamer and check if the stream flows
Hello Danman,
Thank you very much for suggestion.
I found the problem with logread, it was missing ffmpeg in /data/data/eu.danman.zidostreamer.zidostreamer/files/ffmpeg , after I copied ffmpeg binary , stream bacame working 🙂
My question is can I modify quality to something low because it’s glitch when I’m using WiFI? Probably my WiFi is not good and streaming require more speed.
When both devices are connected on LAN , picture is perfect.
Another questing is can I use another protocols other than UDP:// and how I can do that. Currently I’m using udp://@172.16.20.232:1239
Hi Dobril,
glad to hear that. For now, the quality is hardcoded into app, but my plan is to make it adjustable in settings. You can theoretically use any type of output which is supported by ffmpeg. But for now also this cannot by set in settings, you would need to change it in code, but good point to change this also.
I opened the project in Android Studio.
in “StreamSercice” I found definitions:
mMediaRecorder.setVideoSize (1920, 1080)
..Framebuffer
…BitRate
If I just modify these options , it will change resolution of captured video and I’ll need less bandwidth ?
Yes, these parameters set output video quality.
setVideoSize (1280, 720)
Framebuffer (24)
BitRate(2500 * 1024)
Make double picture with some glitch :D.
Can you suggest some values for low than full hd video.
Check the latest version, I changed the settings menu to include bitrate settings.
Hello Danman,
Thank you for update.
Is it possible in next update you to include option for screen resolution 🙂
Another thing which I saw , after I exit from ZidoStreamer still I hear the sound from HDMI, it looks like the app not stops.
Off topic: Does the WiFi working on your device, because after I made the upgrade to v1.0.3.07 it cannot start and show mac address 00:00:00:00:00:00 ?
I have got this working, following these instructions.
However my audio is distorted, in sync, but distored. Particularly worst on speech.
Anyone else have this problem?
Did you try lowering volume? Do you mean distorted or glitchy? What type of streaming are you using?
Yes I tried to lower the volume, it seems to appear at all volumes.
The FFMPEG command I am using is the one mentioned in your github:
/mnt/sdcard/ffmpeg -i – -codec:v copy -codec:a copy -bsf:v dump_extra -f mpegts udp://[IP]:1234
It is basically making a clicky noise, particularly on speech.
I wonder if it is my FFMPEG precompiled binary.
Is their any chance you could link the precompiled binary you used so I can rule that out?
Thanks
I compiled ffmpeg myself, you can download it here:
http://blog.danman.eu/wp-content/uploads/ffmpeg-android.tgz
thanks danman! I will test tonight and see how it goes.
If it does not work, ill record some of it to show you what I mean.
And thanks so far for a great tutorial and all your time on this, its a really great tool for me to use.
I have replaced the ffmpeg binary with the one your compiled, but the distortion remains 🙁
Here is a raw output example.
http://www.filedropper.com/clickyaudio
Interesting… Does the same do the original hdmi recording app?
I will test this later and report back, thanks!
Do you get the distortion at all?
I didn’t notice it before, but so do I have the same distortion in recordings. And the original recording app also records with distortion. Maybe some system update can fix this. This seems to me like a HW/system bug.
Hi Guys! Software by Danman and Thomas works well. In my opinion, you should merge their functionality in one app: give user too chose native or ext encoding type.
There is a question: could it work in a background? Because when i click “home” button and run another app, it’s stops.
Also, is h.265 capabilities in ffmpeg? Could it software encode hevc on our box smoothly?
Hi danman,
i agree with Goshil. Running in background would be nice.
Is it possible?
But it does run in background after starting
very helpful…………………..
I have done a whole bunch of testing with this now. And it appears, that the audio distortion is baked into the device somehow.
I upgraded my firmware to the latest version 1.4.
I cannot live with slightly distorted audio, its just annoying!
I noticed that even on some of the demo videos posted on the Zidoo website that the audio distortion is present.
So I think I am going to return the device for a refund. Sadly.
let us know, how did it end up.
How can I get a piece of this device with HDMI IN streaming enabled. My demo requirement is that the device should be able to take HDMI IN from another STB or a camera and then stream out h.264 packets over RTMP OR RTSP OR HTTP to a WOWZA instance. I should then be able to view the video by accessing the WOWZA URL on any client machine.
You can go buy one and install my app as described on github page. Wowza shoud work fine with rtmp output from this device. Let me know if it works for you. But notice, there are still some issues with sound distortion. I hope, the producer will fix this with firnware update.
Will your APK and library work as it is on ZIDOO X9 based on A9 MSTAR MSO9180D1R UP, 1.5GHz as well. Tronsmart Pavo 9 does not seem to be in stock at the moment. Just called up their China office to find out.
Yes, it will. The firmware is almost the same, you can even reflash them vice-versa.
Hi Danman,
Do you have the source to record the HDMI IN without NDK binary ?
Please share it……
Or else
Can you explain the approach how to do it ?
Hi,
my app doesn’t use NDK anymore. You just need to open camera with id 5 (which is not listed when you request camera list) and have your apk signed with mstar key to be allowed to access that camera.
I think it is specific to the hardware.
Will it work for other hardwares…?
It should work on all devices with HDMI input with MSO9180D1R chipset.
Thanks for the information.
Hi Danman,
I tried your application on ZIDOO X9 A9 MSTAR MSO9180D1R box, sometimes the application unable to start the recording and shows the message “failed to start recording”. Is that anything wrong in the application? or do i need to setup any configuration for this?
It’s good to restart the device before each start of streaming to cleanup the recording process.
On boot also some times it gives the same problem….
I’ve been looking for a slingbox alternative that would work well with a linux client. it seems like this could work, though it seems under construction. I have a really hard time searching for alternatives, I usually get like 90% chrome-cast style results. Do any of you know of any good alternatives? Do you think this will ever really be a replacement, it seems really cool, though, I wonder if it’s powerful enough, I always ran into not enough resource issues when trying to do …………..
The Pavo M9 has an IR blaster for changing the tv/box channels, right? never know how accurate the product descriptions are.
Hi Danman ,
thanks for the app, really helpful .
I have a question, i’m using the app not to stream but to preview the hdmi input from another android tv box . I could preview the hdmi input fullscreen , but as per our requirement the preview should be 75% of the screen , and the rest 25 % we have an image slide show . Could you please help me and tell how to change the preview size of the hdmi input .
thanks in advance .
Hi,
i tried to scale the input on screen today but none of the methods I tried work. I guess we would need documentation for Mstar SDK to properly implement this. Otherwise it’s only guessing…
ok thanks, will try it with the zidoo recorder source, they have implemented scaling ..
Hi danman,
I hopy you can help me.
The important stuff:
Have you an idea why the picture is shrinking?
I have an Zidoo X9 with firmware 1.0.4.2. I deinstalled the Kodi 14 and installed Kodi 16 with play store. Then I started the zidoostreamer with the ffmep option 239.254.0.1:1234. Then i started kodi, goes to system -> addons -> enable the IPTV simple client (that comes with kodi). The IPTV Simple client reads a m3u file, which i created, with content udp://@239.254.0.1:1234. Under sytem -> livetv i activate the TV function of kodi.
When i now go to TV and choose the zidoostreamer channel the picture appears, then black screen, then a smaller picture appears, then black screen, then smaller and so on. In the end i have a black screen.
Normal IPTV runs, also with zidoostreamer in the background running.
With my manual you can reproduce this situation.
Also i make a video with my handy where you can see the shrinking picture and the normal livetv:
Not so important stuff: https://vimeo.com/164077248
When i use zidoostreamer (regardless wifi or ehternet) i become on networkclients (Windows 7 and Debian wheezy) many errors in the vlc log, The picture is not usable, stucks and so on. No Livestream possible.
I know that the x9 has a network problem, so i read your post and the hint that the tronsmart has the same hardware. So i flashed the Pavo M9 firmware on my x9. But when i start the x9 there is a message (i think fom the menu ui) the authentification failed. So i cant test it with the Pavo M9 firmware. Then i flashed the normal X9 firmware back.
Do you have network issues?
When i copy a file with ssh scp i have only 2,5 mbyte, regardless wifi or ethernet. What is your network performance with copy a file with scp?
When it is better, I think the problem is in the firmware.
I used the precompiled ffmpeg from you http://blog.danman.eu/wp-content/uploads/ffmpeg-android.tgz which i downloaded months ago. Evtl. you have a new version?
Nice greetings,
AL
I have noticed unstability with my Tronsmart Pavo M9 too. http://kuvapilvi.fi/k/yVst.png
For another note video stream seems to be always 1080p, even source is lower and recoding app detects lower resolution too.
Thanks greatly for all the effort, this is almost perfect!
I have some success streaming with default settings on ethernet but if I change the bitrate at all the stream stops. Reboots etc do not help.
Audio is mono.
It seems quite unreliable and I have to close and open the app a few times.
I had my Pavo delivered today and did OTA firmware, which happens to be only released today…might it be causing some issues?
Do we know what the bitrate limit for encoding is? I was hoping for 15mbps+
This should be ever better, with his own SATA interface, 1G LAN and also USB3.0
http://www.qintexworld.com/showgoods/889.html
69€ at some web shops
If somebody wants to donate the device, I’ll be happy to check it out.
Hi,
is it possible to stream unicast by a http-Server directly? udp an wifi do not really cope very good….
Didn’t find any switch for that in ffmpeg – though you could pipe it somewhere to get it converted by a proxy to unicast – which is total overkill, I think.
I doubt there is some standardized way how to stream TO http server (I mean create some HTTP POST with data in body or so…). But you can start pure TCP server (e.g. with nc in linux) and push the data to the server using ffmpeg tcp module https://ffmpeg.org/ffmpeg-protocols.html#tcp . This way, the data should be reliably delivered to the server.
hello, I want to do a project. I want input as HDMI TV TDT signal, that signal processing to put on her images or videos, which is displayed by the HDMI output. Would it be possible? Where do we have to start?
Hello Danman,
I hope you are fine 🙂
I get very good success when I’m streaming to Nginx rtmp . Stream work perfect 2-3hour then begin some glitches in picture.Looks like missing video frames, audio is OK. Sometimes after 2-3 mins became fine again.
I check logcat in the moment of glitches and I saw follow:
D/ffmpeg ( 2492): frame=40334 fps= 29 q=-1.0 size= 778399kB time=00:23:15.65 bitrate=4568.9kbits/s
I/tvos ( 1014): [DIPC][ThreadHandleDataReady 7705][1]no free memory for send data
I/tvos ( 1014): [DIPC][ThreadHandleDataReady 7705][1]no free memory for send data
I/tvos ( 1014): [DIPC][ThreadHandleDataReady 7705][1]no free memory for send data
I/tvos ( 1014): [DIPC][ThreadHandleDataReady 7705][1]no free memory for send data
I/tvos ( 1014): [DIPC][ThreadHandleDataReady 7705][1]no free memory for send data
D/ffmpeg ( 2492): frame=40342 fps= 29 q=-1.0 size= 778554kB time=00:23:16.19 bitrate=4568.1kbits/s
I/tvos ( 1014): [DIPC][ThreadHandleDataReady 7705][1]no free memory for send data.
There are same glitches and messages if I temporary stop video input and then started. First 1-2mins there are a lot of : no free memory for send data. in the logs..
Do you have any idea how I can solve it 🙂
and one more thing. Is it possible Zidostreamer app to Start/Stop from SSH, except with reboot 🙂
I think, these errors appear because ffmpeg is not able to read data on input until it processes (sends) data it already read. So if you have same network glitch ffmpeg might be little bit late with reads.
You should be able to start it from shell like they describe here: http://stackoverflow.com/questions/4567904/how-to-start-an-application-using-android-adb-tools
Hello Danman,
Than you for response. Already I tried with am or pm , but in both cases device rebooting doesn’t matte of parameter for am.
You can start ZidoStreamer with am on your device ?
This works for me:
adb shell am start -n eu.danman.zidostreamer.zidostreamer/eu.danman.zidostreamer.zidostreamer.MainActivity
9Hi Danman!
I have purchased this Android Box for 33€:
Cpu quadcore A9r4
gpu Mali 450MP8 @600MHz
1GB ram
hdmi V1.4 in + out
Lots of videos decoder: full hd H.264, MPEG 1, 2 , 4 till 60fps
ethernet function: videp streaming playback, NAS
ebay link: http://www.ebay.de/itm/131860311639?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
I’m having some problems: HDMI-in is installed, the DSLR attached to it is showed on Monitor.
But you app do not work, I click on it, it starts, blank screen comes and goes back to app menu..
I would appreciate, if we could make it together one step-by-step install and configuration.
ssh-server is running on Android-box. VLC udp, does nothing
THX
I don’t know this device… Can you make screenshot of Settings > About phone ?
cat /proc/cpuinfo
Processor : ARMv7 Processor rev 1 (v7l)
processor : 0
BogoMIPS : 1.87
processor : 2
BogoMIPS : 1.87
Features : swp half thumb fastmult vfp edsp neon vfpv3 tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x4
CPU part : 0xc09
CPU revision : 1
Hardware : Amlogic Meson8
Revision : 000c
Serial : 1900000000000000
how to send a .png screenshot over here?
https://drive.google.com/file/d/0B5KVTVAM80OfNml5T1A3WEF1VW8/view?usp=sharing
This is completely different hardware, not from Mstar, so my application will not work for you. Does it have any recording/streaming application?
it has Kodi, hdmi-in, Fernsehfee (TV-Fairy), Live-TV web blocker, screensharing,
google play store
can you download .apk file with hdmi-in application from device and send it to me?
where shoud I find it? How it is called?
File with all the apk;
https://drive.google.com/folderview?id=0B5KVTVAM80OfcGlwemhKNTAzV3c&usp=sharing
Would you be interested in help me?
Yes, i can check it out. But there are too few apps in that folder. Try some file manager and go to /system/app . Or is that recording app there?
I will try it.
I have ssh access, maybe you can tell me witch command I have to put on terminal to get this app?
I installed also rom manager, but it doesn’t seems to work properly on this box? should i try to flash a specific custom rom?
it look like it is all the installed apps
ssh into device, then ‘su’ and ‘ls /system/app/’
ls /system/app/
AppInstaller.apk
AppInstaller.odex
BasicDreams.apk
Bluetooth.apk
Browser.apk
Calculator.apk
Calendar.apk
Camera2.apk
CertInstaller.apk
DeskClock.apk
DocumentsUI.apk
DocumentsUI.odex
DownloadProviderUi.apk
Email.apk
Exchange2.apk
FaceLock.apk
Galaxy4.apk
HTMLViewer.apk
HoloSpiralWallpaper.apk
KeyChain.apk
LatinIME.apk
LiveWallpapers.apk
LiveWallpapersPicker.apk
MagicSmokeWallpapers.apk
MboxSetting.apk
MediaBoxLauncher.apk
Miracast.apk
Music.apk
NoiseField.apk
PacProcessor.apk
PacProcessor.odex
PackageInstaller.apk
PhaseBeam.apk
PhotoTable.apk
PicoTts.apk
PicoTts.odex
PreloadInstall.apk
PrintSpooler.apk
PrintSpooler.odex
PromptUser.apk
Provision.apk
QuickSearchBox.apk
RC_Server.apk
RemoteIME.apk
SoundRecorder.apk
SubTitle.apk
TelephonyProvider.apk
Update.apk
UserDictionaryProvider.apk
VideoPlayer.apk
VisualizationWallpapers.apk
WAPPushManager.apk
WAPPushManager.odex
com.auto.testing.apk
com.rhmsoft.fm.apk
fishnoodle.spacescapewallpaper_free.apk
Hi, did you know if it’s possible to get hdmi input source and send it to a textureview? because we’ve tryed for many hour but it seems to work only on a surfaceview 🙁 . Can i contact you with a private message or mail? i need some help on this and i don’t know how to solve it!
Thanks!
Hi!
Thanks a lot for the blog post and the sources.
I have tried various resolutions, removing audio, decreasing the video encoding bitrate… but i still have a delay around 2.5 seconds.
I suspect it is related on the read/write buffers, not on the encoding operation itself.
Do you have any idea on how I could work around this?
Thank you!
Mihai
Hi Danmen,
When i try to stream the video i got the following warning message continuously from ffmpeg….
“Non-monotonous DTS in output stream 1:1; previous: 2234108, current: 2230257; changing to 2234109. This may result in incorrect timestamps in the output file”.
Is there any way to resolve it…..
I have the same problem, timestamp is altered. When watching the stream on my computer after an hour I have a delay of 5 sec at least and 10 sec after 2 hours. It became realy hard to switch tv chanel since so much delay, I simply restart the stream in kodi. My zidoo is plug with ethernet to my computer ( 2 ethernet cable) with default setting from windows 10 for network.
I get the same warning as Pranesh Kumar: “Non-monotonous DTS in output stream 1:1; previous: 2234108, current: 2230257; changing to 2234109. This may result in incorrect timestamps in the output file”. Not with the same numbers, but the warning is the same. Please help.
Hi danman, how much latency does this device has when streaming in to udp to computer??
hi The ffmpeg file located at:
http://blog.danman.eu/wp-content/uploads/ffmpeg-android.tgz
Does not exist.
Can you please upload a new ffmpeg-android.tgz file?
You can find prebuilt binaries here: https://github.com/WritingMinds/ffmpeg-android/releases
I’d buy your app on a heart beat if it allowed me to record the best prores possible from my mirrorless camera via hdmi. Also… Blackmagic released their Prores RAW format and i think it is open source. I think a lot of filmmakers would put money on that.