I am attempting to stream webcam video from a BeagleBoneBlack to other computers over ethernet. I want to add an overlay with details about the video. I am capturing video from a Logitech C920 webcam, which is doing the hard work of creating the video on H.264 format, using FFMPEG to MUX the video into a network stream. The current video stream runs at 3Mb/s over ethernet, and seems to run at the same bitrate whether I’m sending video 30FPS at 1920×1080, 1280×720, or any other resolution I’ve tried. If I’m running the BBB at 1GHz FFMPEG uses only 3% load on the processor, while at 300MHz it uses 10% load. Either processor speed indicates that I should have plenty of CPU available for creating a subtitle frame a second.
If I transcode the H264 coming from the C920 to h.264 from FFMPEG the BBB CPU is 100% used and I’ve not been able to get over 5 FPS. This has led me to the idea of adding a second stream with much more compressible data and requiring the client computer to know how to enable subtitles.
My understanding of DVD Subtitles is that they are stored as image overlays. The images seem to be 3 color plus transparency, with the color indexed. They are RLE (Run Length Encoded) images but don’t seem to conform to any standard that would be created by an image library such as OpenCV.
The most useful links I’ve come across related to the DVD subtitles are these three:
- http://stnsoft.com/DVD/spu.html
- http://womble.decadent.org.uk/talks/dvd-ukuug06/dvd-talk-ukuug06-paper.html
- http://documentation.apple.com/en/dvdstudiopro/usermanual/index.html#chapter=19%26section=13%26hash=apple_ref:doc:uid:DVDStudioPro-UserManual-43664SUB-1028272
Using FFMPEG to examine at a video that was ripped from a DVD into an MKV file with several subtitle layers shows the following:
Stream #0:0(eng): Video: mpeg2video (Main), yuv420p, 720x480 [SAR 32:27 DAR 16:9], SAR 186:157 DAR 279:157, 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s (default) Metadata: title : 3/2+1 Stream #0:2(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s Metadata: title : 3/2+1 Stream #0:3(spa): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s Metadata: title : 2/0 Stream #0:4(fre): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s Metadata: title : 2/0 Stream #0:5(eng): Subtitle: dvd_subtitle (default) Stream #0:6(spa): Subtitle: dvd_subtitle Stream #0:7(eng): Subtitle: dvd_subtitle Stream #0:8(spa): Subtitle: dvd_subtitle Stream #0:9(fre): Subtitle: dvd_subtitle
All of the descriptions of creating subtitle tracks are directly related to creating textual subtitles using tools that are wonderful for mainstream movie content but not what I want to do. e.g.
- http://forum.videohelp.com/threads/163978-How-To-Add-Subtitles-to-a-DVD-%28THE-COMPLETE-WORKING-GUIDE%29
- How to burn subtitles into the video
- http://ffmpeg.org/ffmpeg.html#Subtitle-options_003a
- http://en.wikipedia.org/wiki/VOB
- http://en.wikipedia.org/wiki/MPEG_transport_stream
I’ve not figured out how to create my own subtitle stream and am still looking for information on that. I’ve not figured out what parameters may need to be passed to FFMPEG to indicate that I’m passing in a subtitle track. I’ve not figured out if there’s a way in FFMPEG to indicate that the subtitles should be on by default, or forced subtitles, while still keeping them as a separate stream.
It doesn’t help that the DVD subtitle files seem to use the STL extension and that same extension is used for the input files for many 3D Printers.