I pinpointed the source of the problem: for some mysterious reason, gstreamer is not able to play MP4 video files with an audio rate of 48000Hz:<br><br> File : 23 MB (23 MB), duration: 0:00:59, type: DSH, 1 audio stream(s), quality: 98 %<br>
Video : 18.13 MB, 2578 Kbps, 29.970 fps, 1280*768 (16:9), YV12 = Unknown, Supported<br> Audio : 5.40 MB, 768 Kbps, 24000 Hz, 2 channels, 0xFF = Unknown, Unsupported<br><br>The good news is if I encode the file and change just the rate to 44100Hz, it works!<br>
<br>I tried to fix it by adding a capsfilter to the pipeline to change the audio sample rate but it didn't worked. I guess the problem is located before this stage in the pipeline.<br><br>Should I file a bug?<br>--<br>
Karl Phillip<br><br><div class="gmail_quote">On Tue, Dec 20, 2011 at 6:23 PM, Karl Phillip <span dir="ltr"><<a href="mailto:maxphil@gmail.com">maxphil@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
There has been some developments. It seems the issue is related to the type of video that is being played (maybe the resolution size, or something like that). <br><br>The video I was trying to play is a MP4 file, and then I found that AVIs can be played, so I thought the problems were MP4 files.<br>
<br>On Windows, AVICodec (tool) reports them as:<br><br>* bad.mp4<br> File : 22 MB (22 MB), duration: 0:00:50, type: DSH, 1 audio stream(s), quality: 98 %<br> Video : 13.04 MB, 2188 Kbps, 29.970 fps, 1280*768 (16:9), YV12 = Unknown, Supported<br>
Audio : 9.15 MB, 1536 Kbps, 48000 Hz, 2 channels, 0xFF = Unknown, Unsupported<br><br>* good.avi:<br> File : 12.81 MB (12.81 MB), duration: 0:00:59, type: AVI, 1 audio stream(s), quality: 69 %<br> Video : 11.90 MB, 1692 Kbps, 25.0 fps, 720*320 (2.21:1), XVID = XVID Mpeg-4, Supported<br>
Audio : 921 KB, 128 Kbps, 44100 Hz, 2 channels, 0x55 = Lame MP3, Supported<br><br>One of the interesting things we've done is convert bad.mp4 to the same format used by good.avi, and the resulting video also didn't worked. So my theory that the problem was in MP4 files went down the hole, check it out:<br>
<br>* converted:<br> File : 5.14 MB (5.14 MB), duration: 0:00:50, type: AVI, 1 audio stream(s), quality: 70 %<br> Video : 3.80 MB, 638 Kbps, 29.970 fps, 1280*768 (16:9), XVID = XVID Mpeg-4, Supported<br>
Audio : 1.33 MB, 224 Kbps, 48000 Hz, 2 channels, 0x55 = Lame MP3, Supported<br>
<br>The converted video is virtually in the same format as good.avi and it still doesn't work.<br><br>In case you are interested, the following command shows the pipeline used by my application and it successfully plays MP4 files on Linux:<br>
<br>gst-launch filesrc location=bad.mp4 ! decodebin name=decoder decoder. ! audioconvert ! audioresample ! autoaudiosink decoder. ! ffmpegcolorspace ! capsfilter caps=video/x-raw-rgb ! ximagesink<br><br>I think the next commands are the Windows equivalent of that. I just changed the video sink element at the end but none seems to work:<br>
<br>gst-launch.exe filesrc location=bad.mp4 ! decodebin name=decoder decoder. ! audioconvert ! audioresample ! directsoundsink decoder. ! ffmpegcolorspace ! capsfilter caps="video/x-raw-rgb" ! dshowvideosink<br>
<br>0:00:00.109375000 3360 00332E00 ERROR GST_PIPELINE grammar.tab.c:713:gst_parse_perform_link: could not link capsfilter0 to dshowvideosink0<br>WARNING: erroneous pipeline: could not link capsfilter0 to dshowvideosink0<br>
<br><br>gst-launch.exe filesrc location=bad.mp4 ! decodebin name=decoder
decoder. ! audioconvert ! audioresample ! directsoundsink decoder. !
ffmpegcolorspace ! capsfilter caps="video/x-raw-rgb" ! sdlvideosink<br>0:00:00.109375000 240 00332E00 ERROR GST_PIPELINE grammar.tab.c:713:gst_parse_perform_link: could not link capsfilter0 to sdlvideosink0<br>
WARNING: erroneous pipeline: could not link capsfilter0 to sdlvideosink0<br><br>and finally trying with autovideosink, it looks like it will play the file but it does nothing:<br><br>C:\ossbuild\Build\Windows\Win32\Release\bin>gst-launch.exe filesrc location=bad.mp4 ! decodebin name=decoder decoder. ! audioconvert ! audioresample ! directsoundsink decoder. ! ffmpegcolorspace ! capsfilter caps="video/x-raw-rgb" ! autovideosink<br>
Setting pipeline to PAUSED ...<br>Pipeline is PREROLLING ...<br><br><br>I could use some help from the experts.<br><br>Thank you all,<span class="HOEnZb"><font color="#888888"><br>--<br>Karl Phillip</font></span><div class="HOEnZb">
<div class="h5"><br><br><br><br><div class="gmail_quote">On Tue, Dec 20, 2011 at 12:01 PM, Karl Phillip <span dir="ltr"><<a href="mailto:maxphil@gmail.com" target="_blank">maxphil@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I wrote a Video Player for Linux that uses QtGstreamer. It works beatifully! Now that I've successfully compiled and tested gstreamer/qtgstreamer for Windows I decided it was time to compile my Video Player for Windows as well, and so it was done, flawlessly. <br>
<br>However, when my application is executed audio/video is not being played. <br><br>I know that onNewDecodedPad() is being triggered for "audio/x-raw-int" and "video/x-raw-rgb", and I'm also certain that all the pipeline setup is good since it works on Linux.<br>
<br>Here is what is happening: my VideoPlayer class inherits from QGst::Utils::ApplicationSink , and I noticed that newBuffer() is not being called when the pipeline is set to QGst::StatePlaying. That's odd, right? <br>
<br>So I addSignalWatch() to the pipeline bus and further testes revelead that after everything is properly configured and loaded, i.e. after onNewDecodedPad() is executed for both audio/video streams saying that everything is good to go, setting the pipeline to:<br>
pipeline->setState(QGst::StatePlaying);<br><br>doesn't trigger a QGst::MessageStateChanged event, nor a QGst::MessageError event. I don't know what's going on since I can see the very same code working on Linux.<br>
<br>What could be causing this? I have added debugs for virtually every QtGstreamer call that is being done, so if anything had failed during the setup I would know.<br><br>Thanks guys,<span><font color="#888888"><br>
--<br>Karl Phillip<br>
</font></span></blockquote></div><br>
</div></div></blockquote></div><br>