GNOME Bugzilla – Bug 653492
mpegtsdemux: Audio & video streams mixed up for Apple sample HLS stream
Last modified: 2012-03-13 14:35:17 UTC
When playing Apple sample HLS stream with mpegtsdemux, video is pushed out on the audio pad and vice versa after hlsdemux switches to a higher quality stream Ensure good bandwith, and run this example pipeline. It starts off OK but fails to detect the new stream mapping and audio and video streams are mixed up. In the example run below it happens after 0:00:40. It's even more clear if aacparse is used to parse the audio stream, it fails and sometimes segfaults when attempting to parse the video stream as audio. Reasonable behavior is newly added pads when the input stream changes. gst-launch -v souphttpsrc location=http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 ! hlsdemux ! mpegtsdemux name=d d. ! audio/mpeg ! queue ! fakesink name=audio sync=true d. ! video/x-h264 ! queue ! fakesink name=video sync=true audio: 11 bytes, timestamp: 0:00:39.907300000 audio: 11 bytes, timestamp: 0:00:39.953744444 video: 157 bytes, timestamp: 0:00:39.963300000 video: 439 bytes, timestamp: none audio: 157 bytes, timestamp: 0:00:40.030033333 audio:4048 bytes, timestamp: none audio:5099 bytes, timestamp: none video: 11 bytes, timestamp: 0:00:40.046622222 audio: 157 bytes, timestamp: 0:00:40.063400000 audio: 396 bytes, timestamp: none video: 170 bytes, timestamp: 0:00:40.093066666 video: 257 bytes, timestamp: none audio: 157 bytes, timestamp: 0:00:40.096766666 audio: 505 bytes, timestamp: none audio: 157 bytes, timestamp: 0:00:40.130133333 audio:1150 bytes, timestamp: none video: 166 bytes, timestamp: 0:00:40.139500000 audio: 157 bytes, timestamp: 0:00:40.163500000 audio: 491 bytes, timestamp: none video: 11 bytes, timestamp: 0:00:40.185944444
fwiw, this works fine with tsdemux. It detects program changes, closes the previous program and opens a new program accordingly.
tsdemux is autopluged instead of mpegtsdemux in master, and mpegtsdemux will not be maintained anymore so I close as obsolete.