ohropax
11th October 2007, 19:19
Hi all,
i am working on a plugin for VDR (http://www.cadsoft.de/vdr/) and want to create a low bandwidth stream from live tv. However i have problems finding a combination of container/software and player that actually works well. Usually this would be a case for RTP transmission, however the application can not serve data as RTP livestream and can not be modified in that direction for various reasons. Instead the clients must connect to the application by HTTP and receive the data through this connection. As clients (VLC,mplayer,etc) have been supporting this for ages, this should not be too difficult. this prooved to be wrong.
The part that i am working on can be seen as a pipe. It receives a filtered MPEG transport stream containing MPEG2 audio+video and must output a stream containing h.264 video and AAC audio.
The simplest implementation uses the ffmpeg commandline utility and muxes the converted streams into MPEG TS. This creates a number of problems:
1. All clients that i have tested so far, fail to display the video stream properly, news tickers jump back and forth - it looks as if the presentation timestamps on the frames are wrong. If i change the video codec to (ffmpeg -vcodec mpeg4) everything is working nicely.
2. Muxing to TS creates huge overhead, about 70-90% for AAC audio caused by the small size of the compressed audio packages.
Point (2) is only an annoyance but point (1) is the major blocker right now. Does anyone have an idea on how to achieve better results?
Thanks for any help,
Marcus
commandline for reference reasons:
"ffmpeg -i - -acodec libfaac -ab 64k -vcodec libx264 -b 240k -bt 240k ...somex264options... -f mpegts -"
i am working on a plugin for VDR (http://www.cadsoft.de/vdr/) and want to create a low bandwidth stream from live tv. However i have problems finding a combination of container/software and player that actually works well. Usually this would be a case for RTP transmission, however the application can not serve data as RTP livestream and can not be modified in that direction for various reasons. Instead the clients must connect to the application by HTTP and receive the data through this connection. As clients (VLC,mplayer,etc) have been supporting this for ages, this should not be too difficult. this prooved to be wrong.
The part that i am working on can be seen as a pipe. It receives a filtered MPEG transport stream containing MPEG2 audio+video and must output a stream containing h.264 video and AAC audio.
The simplest implementation uses the ffmpeg commandline utility and muxes the converted streams into MPEG TS. This creates a number of problems:
1. All clients that i have tested so far, fail to display the video stream properly, news tickers jump back and forth - it looks as if the presentation timestamps on the frames are wrong. If i change the video codec to (ffmpeg -vcodec mpeg4) everything is working nicely.
2. Muxing to TS creates huge overhead, about 70-90% for AAC audio caused by the small size of the compressed audio packages.
Point (2) is only an annoyance but point (1) is the major blocker right now. Does anyone have an idea on how to achieve better results?
Thanks for any help,
Marcus
commandline for reference reasons:
"ffmpeg -i - -acodec libfaac -ab 64k -vcodec libx264 -b 240k -bt 240k ...somex264options... -f mpegts -"