寻找解释如何在一个模块中复用两个输入时使用命名元素。例如,在一个mpegtsmux模型中复用音频和视频
gst-launch filesrc location = surround.mp4! decodebin name = dmux!排队! audioconvert! lamemp3enc dmux。 !排队! x264enc! mpegtsmux name = mux!排队! filesink location = out.ts
以上管道提供插件互连,如下所示
因此它显示音频无法连接到mpegtsmus。
如何修改命令行以在mpegtsmux中进行音频和视频多路复用?
谢谢!
答案 0 :(得分:3)
我会尝试提出基本的想法,虽然我不是那么精通,但可能是完全错误的。
!
)结尾,而是以另一个元素的开头结束,则它是一个新的子管道:filesrc location=a.mp4 ! qtdemux name=demp4
{{1} } demp4. ! something
可以是其他子管道中的源和/或接收器:somedemux.audio_00
demp4. ! queue ! decodebin ! x264enc ! mux.
或由名称引用:mpegtsmux name=mux
末尾的点是引用的语法。mux.
mux. ! filesink location=out.ts
之类的打击垫。 muxname.audio_00
是"来自muxname.
" 的合适音频/视频板的快捷方式。示例
那就是说,我假设你的mp4文件同时包含音频和视频。在这种情况下,您需要先将其解复用为2个流,然后进行解码,重新编码,然后将它们复用。
确实,您的音频未与muxname
相关联。
如果你真的需要解码流,那就是我要做的。但这并不适合我:
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
答案 1 :(得分:0)
它没有链接,因为您的启动线没有这样做。请注意lamemp3enc元素未在下游链接。
将您的启动线更新为:
gst-launch filesrc location = surround.mp4! decodebin name = dmux!排队! audioconvert! lamemp3enc! MUX。 DMUX。 !排队! x264enc! mpegtsmux name = mux!排队! filesink location = out.ts
唯一的变化是“!mux”。在lamemp3enc之后告诉它链接到mpegtsmux。
在您更新内容时,请注意您使用的gstreamer 0.10已过时且无法使用,请升级到1.x系列以获取最新的改进和错误修正。