用于在windows上播放mp4文件的gstreamer管道

用于在windows上播放mp4文件的gstreamer管道,gstreamer,gst-launch,Gstreamer,Gst Launch,视频文件与下面的管道完美配合 .\gst-launch-1.0.exe playbin uri=file:///C:\\Users\\naseeb\\Downloads\\Gabbroo.mp4 但是,我想自己使用demux、解码器和sink创建管道。 我在管道下面创建了 .\gst-launch-1.0.exe filesrc location=C:\\Users\\naseeb\\Downloads\\Gabbroo.mp4 ! qtdemux name=demux demux. ! qu

视频文件与下面的管道完美配合

.\gst-launch-1.0.exe playbin uri=file:///C:\\Users\\naseeb\\Downloads\\Gabbroo.mp4
但是,我想自己使用demux、解码器和sink创建管道。 我在管道下面创建了

.\gst-launch-1.0.exe filesrc location=C:\\Users\\naseeb\\Downloads\\Gabbroo.mp4 ! qtdemux name=demux demux. ! queue ! mad ! audioconvert ! audioresample ! autoaudiosink demux. ! queue ! avdec_h264  ! autovideosink
但它不工作且失败,错误如下:

警告:从元素/GstPipeline:pipeline0/GstQTDemux:demux:Delayed linking>失败。 其他调试信息: ./grammar.y(506):gst_parse_no_more_pads():/GstPipeline:pipeline0/GstQTDemux:demux: 未能延迟将名为demux的GstQTDemux的某个pad链接到名为queue0的GstQueue的某个pad 重新分配延迟。。。 重新分配延迟。。。 错误:来自元素/GstPipeline:pipeline0/GstQTDemux:demux:内部数据流错误。 其他调试信息: qtdemux.c(5850):gst_qtdemux_loop():/GstPipeline:pipeline0/GstQTDemux:demux: 流停止,原因未协商(-4)

我已经搜索了很多,但找不到我在管道中缺少的使其工作的元素

请提出一些解决办法

  • 在解码器之前,您可能需要音频和视频解析器。所以试试
    mpegaudioparse!mad
    h264parse!avdec_h264

  • 您很可能需要解码器和视频接收器之间的视频转换器。尝试
    自动视频转换!自动视频接收器


  • 现在我得到错误:其他调试信息:./grammar.y(506):gst\u parse\u no\u more\u pads():/GstPipeline:pipeline0/GstQTDemux:demux:延迟链接名为demux的GstQTDemux的某个pad到名为queue0的GstQueue的某个pad的失败重新分发延迟…您确定该文件包含您试图解码的流吗?请尝试
    gst-discoverer-1.0 mp4file
    。谢谢Florian。gst发现者告诉我mp4文件包含AAC音频。我使用了正确的音频解析器和解码器,现在可以正常播放文件了。我使用命令:。\gst-launch-1.0.exe filesrc location=C:\\Users\\naseeb\\Downloads\\gabbro.mp4!qtdemux name=demux demux!队列啊!avdec_aac!音频转换!音频重采样!自动音频接收器分接器!队列h264parse!avdec_h264!自动视频转换!autovideosink
    gst\u parse\u no\u more\u pads()
    找到任何修复方法?