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

Command line Gstreamer管道多个接收器到一个src,command-line,gstreamer,pipeline,Command Line,Gstreamer,Pipeline,寻找如何使用命名元素在一个模块中对两个输入进行muxing的解释。例如,在一个mpegtsmux模块中多路复用音频和视频 gst启动文件rc location=surround.mp4!decodebin name=dmux!队列音频转换!lamemp3enc dmux!队列x264enc!mpegtsmux name=mux!队列filesink location=out.ts 上面的管道提供了插件互连,如下所示 所以它显示音频没有连接到mpegtsum 如何修改命令行以在MPEGTSUM中

寻找如何使用命名元素在一个模块中对两个输入进行muxing的解释。例如,在一个mpegtsmux模块中多路复用音频和视频

gst启动文件rc location=surround.mp4!decodebin name=dmux!队列音频转换!lamemp3enc dmux!队列x264enc!mpegtsmux name=mux!队列filesink location=out.ts

上面的管道提供了插件互连,如下所示

所以它显示音频没有连接到mpegtsum

如何修改命令行以在MPEGTSUM中使用音频和视频muxedup


谢谢

它没有链接,因为您的发布线没有链接。请注意,lamemp3enc元素是如何不链接到下游的

将您的产品线更新为:

gst启动文件rc location=surround.mp4!decodebin name=dmux!队列音频转换!瘸子!多路复用器。dmux!队列x264enc!mpegtsmux name=mux!队列filesink location=out.ts

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


当您在更新内容时,请注意,您正在使用的gstreamer 0.10已过时多年且未添加任何内容,请升级到1.x系列以获得最新的改进和错误修复。

它没有链接,因为您的产品线没有这样做。请注意,lamemp3enc元素是如何不链接到下游的

将您的产品线更新为:

gst启动文件rc location=surround.mp4!decodebin name=dmux!队列音频转换!瘸子!多路复用器。dmux!队列x264enc!mpegtsmux name=mux!队列filesink location=out.ts

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

当您在更新内容时,请注意,您使用的是过时多年且未添加内容的gstreamer 0.10,请升级到1.x系列,以获得最新的改进和错误修复。

我将尝试给出基本想法,尽管我不是那么精通,可能是完全错误的

  • 一条管道可以由多个子管道组成。如果某个元素()不是以管道(
    )结尾,而是以另一个元素开头,那么它就是一个新的子管道:
    filesrc location=a.mp4!qtdemux name=demp4
    demp4!一些东西
  • 命名的bin(通常是muxer)或类似的
    somedemux.audio\u 00
    可以是其他子管道中的源和/或接收器:
    demp4!队列德克宾!x264enc!多路复用器。
  • 通常,子管道以命名的bin/muxer结尾,声明:
    mpegtsmux name=mux
    或由名称引用:
    mux。
    结尾的点是引用的语法
  • 然后,命名的muxer可以通过管道传输到另一个子管道中的接收器:
    mux!filesink location=out.ts
  • 如果您仅使用来自源的唯一音频或视频流,则不必指定类似于
    muxname.audio\u 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
我会尽量给出基本的想法,虽然我不是那么熟练,可能是完全错误的

  • 一条管道可以由多个子管道组成。如果某个元素()不是以管道(
    )结尾,而是以另一个元素开头,那么它就是一个新的子管道:
    filesrc location=a.mp4!qtdemux name=demp4
    demp4!一些东西
  • 命名的bin(通常是muxer)或类似的
    somedemux.audio\u 00
    可以是其他子管道中的源和/或接收器:
    demp4!队列德克宾!x264enc!多路复用器。
  • 通常,子管道以命名的bin/muxer结尾,声明:
    mpegtsmux name=mux
    或由名称引用:
    mux。
    结尾的点是引用的语法
  • 然后,命名的muxer可以通过管道传输到另一个子管道中的接收器:
    mux!filesink location=out.ts
  • 如果您仅使用来自源的唯一音频或视频流,则不必指定类似于
    muxname.audio\u 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

谢谢你的解释。只是试过命令,但什么也没发生。谢谢你的解释。只是尝试命令,但什么都没有发生。