HTTP Live Streaming Server
(It's a start)
Revision as of 00:42, 11 August 2012
Experimental support for streaming Myth content to other devices (iOS, other HLS players) via http live streaming protocol was added in 0.25 and enhanced for 0.26
Your backend must have been compiled with "--enable-libx264 and --enable-libmp3lame" to support the H.264 video and MP3 audio used in the HLS streams generated by MythTV v0.25. Without those, you'll never get anything transcoded. Some packagers are already doing this for you, but if you build by hand, you'll have to remember to do it yourself.
From inside your local network go to <http://backend.ip.addr:6544/>
Click API->Examples->HTTP Live Streaming
Search for a file name/storage group that you want to stream and click the appropriate radio button for the .mpg file (not the pngs)
Click add stream (adjust the size bandwidth settings to meet your needs)
Wait a few moments for the transcoding to get going (depending on the power of your backend, more time may be required). A status will appear above.
Click play and a screen will appear with JWplayer (which might need to be installed first). On mythbuntu, there was a password or pin that I needed. Search to find out how to do this (its not your db password)
When you are done watching the stream, click delete to free up some space.
You should be able to fast forward and rewind, I can do it fine in JW Player on my system as well as on the iOS devices I test with.
Possible future enhancements
HLS TODO list:
- cutlist support (both internal and user-supplied)
- 'start at position X' support
- support multiple bitrate streams vs just the single video bitrate and audio-ony stream.
- add 'resume' support to restart a stopped transcode.
- investigate encoding streams on-demand to allow seeking forward to a point in the video which has not been encoded yet.
- settings editor (# of encoding threads, http content directory, etc.)
- MythWeb integration via JW Player
- enhancements around tracking which files are being streamed (ie, track whether a file is a recording, video, etc. to allow the client to get access to metadata on HLS sessions easier)
- (better) autodetection of which profiles to use for encoding
- realtime transcoding support to allow mythtranscode to create HLS streams for recordings in progress or LiveTV.
- mythtranscode enhancements related to the ffmpeg libav* code:
- WEBM support for pre-transcoding full files
- HLS transcodes run on the BE that you send the command to as long as it has access to the recording. Long-term, I'd like to get support either integrated into the JobQueue or another queueing method.