video decoding issue with mp4 container (Android playback)
Submitted by Gregoire
Link to original bug (#766201)
Description
Summary: The presence of audio in an mp4 audio/video file confused typefind and decodebin to the point that the pipeline can't find the video decoder plugin.
I have two videos generated by gstreamer-0.10 on an embedded device. The same video encoder is used in both cases:
[1] video/videov.mp4 has only a h264 track. mp4info video/videov.mp4 reports:
videov.mp4:
Track Type Info
1 video H264 Baseline@4, 7.716 secs, 16614 kbps, 1280x1440 @ 50.155521 fps
[2] videoaudio/videov.mp4 has a h264 track and a mp3 track. mp4info videoaudio/videov.mp4 reports:
videov.mp4:
Track Type Info
1 video H264 Baseline@4, 7.199 secs, 16614 kbps, 1280x1440 @ 50.145854 fps
2 audio MPEG-1 Audio (11172-3), 7.176 secs, 48 kbps, 24000 Hz
The two files are provided here: http://gentil.com/tmp/samples.zip
I play both files on a PixelC Android 6.x tablet with gstreamer 1.7.91. Note that I have the same issue on Nexus 5x. The two pipeplines are:
[1] video/videov.mp4
filesrc location=/storage/emulated/0/aiTennis3D/video/videov.mp4 ! qtdemux name=q q.video_0 ! queue ! decodebin name=forhwgl ! queue ! identity name=forhalffps ! glimagesink force-aspect-ratio=false
[2] videoaudio/videov.mp4
filesrc location=/storage/emulated/0/aiTennis3D/videoaudio/videov.mp4 ! qtdemux name=q q.video_0 ! queue ! decodebin name=forhwgl ! queue ! identity name=forhalffps ! glimagesink force-aspect-ratio=false q.audio_0 ! queue ! decodebin ! queue ! autoaudiosink
When playing the video only file, there is no problem. log log-video.zip is attached.
When playing the video/audio file, gstreamer can't find the video decoder plugin. The log log-videoaudio.zip is attached.
A few additional notes:
-
amcviddec-omxnvidiah264decode doesn't seem to be instantiated in the second case.
-
The problem is the same with a simple playbin pipeline.
-
If I replace decodebin by "h264parse ! amcviddec-omxnvidiah264decode", it's working.