Gstreamer管道多个接收器到一个src

寻找解释如何在一个模块中复用两个输入方面使用命名元素。 例如在一个mpegtsmux模块中混合音频和视频

gst-launch filesrc location = surround.mp4! 解码器名称= dmux! 队列! audioconvert! lamemp3enc dmux。 ! 队列! x264enc! mpegtsmux name = mux! 队列! filesink location = out.ts

管道以上给插件互连如下

在这里输入图像描述

所以它显示音频不连接到mpegtsmus。

如何修改命令行以在mpegtsmux中混合使用音频和视频?

谢谢!


它没有链接,因为你的发射线没有这样做。 注意lamemp3enc元素没有链接到下游。

将您的发射线更新为:

gst-launch filesrc location = surround.mp4! 解码器名称= dmux! 队列! audioconvert! lamemp3enc! MUX。 DMUX。 ! 队列! x264enc! mpegtsmux name = mux! 队列! filesink location = out.ts

唯一的变化是“!mux”。 在lamemp3enc之后告诉它链接到mpegtsmux。

在更新内容时,请注意,您正在使用已过时且未被宣布的gstreamer 0.10,请升级到1.x系列以获取最新的改进和错误修正。


尽管我没有那么精通,并且可能是错误的,但我会尽量给出基本的想法。

  • 一条管道可以由几条子管道组成。 如果某个元素(bin)不是以管道( ! )结尾,而是以另一个元素的开始结尾,那么这是一个新的子管道: filesrc location=a.mp4 ! qtdemux name=demp4 filesrc location=a.mp4 ! qtdemux name=demp4 demp4. ! something demp4. ! something
  • 一个命名的bin(通常是somedemux.audio_00 )或者像somedemux.audio_00那样的somedemux.audio_00可以是其他子管道中的源和/或接收器: demp4. ! queue ! decodebin ! x264enc ! mux. demp4. ! queue ! decodebin ! x264enc ! mux.
  • 通常,子流水线以命名的bin / mpegtsmux name=mux ,声明为: mpegtsmux name=mux或由名称: mux.引用mux. 最后一点是参考语法。
  • 然后,可以将命名的复用器传送到另一个子管道中的接收mux. ! filesink location=out.tsmux. ! filesink location=out.ts mux. ! filesink location=out.ts
  • 如果您只使用来自源的唯一音频或视频流,则不必指定像muxname.audio_00这样的muxname.audio_00垫。 muxname. 是“从muxname合适的音频/视频板”的捷径。
  • 这个例子

    这就是说,我认为你的MP4文件同时具有音频和视频。 在这种情况下,您需要首先将其解码为2个数据流,然后解码,重新编码,然后将其复用回来。

    事实上,您的音频没有连接到mpegtsmux

    如果你真的需要解码流,那就是我会做的。 但是,这对我并不适用,但:

    gst-launch-1.0 filesrc location=surround.mp4 ! 
      qtdemux name=demp4 
      demp4. ! queue ! decodebin ! audioconvert ! lamemp3enc ! mpegtsmux name=mux 
      demp4. ! queue ! decodebin ! x264enc ! mux. 
      mux. ! filesink location=out.ts
    

    或者让我们使用decodebin来神奇地解码两个流:

    gst-launch-1.0 filesrc location=surround.mp4 ! 
      decodebin name=demp4 
      demp4. ! queue ! audioconvert ! lamemp3enc ! mpegtsmux name=mux 
      demp4. ! queue ! x264enc ! mux. 
      mux. ! filesink location=out.ts
    
    链接地址: http://www.djcxy.com/p/7639.html

    上一篇: Gstreamer pipeline multiple sink to one src

    下一篇: Record synchronized video and audio into container file with gstreamer