【发布时间】:2014-08-19 11:25:59
【问题描述】:
我正在使用 gstreamer 管道将 mp4 文件编码为不同的比特率。我使用来自 gst-streaming-server 的代码构建了管道。管道似乎不起作用。我无法理解这里的管道语法来调试它。
gst-launch-1.0 filesrc location=video_test.mp4 name=src ! \
decodebin name=dec queue name=vqueue ! \
videosegmentclip name=vclip ! \
videoconvert ! \
video/x-raw, format=I420 ! \
videocrop top=0 bottom=0 left=0 right=0 ! \
queue ! \
tee name=vtee queue name=aqueue max-size-time=5000000000 max-size-bytes=0 max-size- buffers=0 ! \
audiosegmentclip name=aclip ! \
audioconvert ! \
audio/x-raw, channels=2 ! \
audioresample ! \
audio/x-raw, rate=48000 ! \
voaacenc bitrate=128000 ! \
queue ! \
tee name=atee vtee. ! \
queue ! \
videoscale add-borders=false ! \
video/x-raw,pixel-aspect-ratio=1/1,width=1280,height=720 ! \
x264enc name=venc0 bitrate=2372 tune=zerolatency ! \
queue ! \
mp4mux name=mux0 ! \
watchdog timeout=5000 ! \
filesink name=sink0 location=out0.mp4 atee. ! \
queue ! \
mux0. \
以上是完整的管道。对我来说困难的部分是理解如下
decodebin name=dec queue name=vqueue
没有!在上面的行中,不应该有! decodebin和队列之间
tee name=vtee queue name=aqueue... ! audiosegmentclip
在上面的行中有一个名为 vtee(videotee)的 tee,但链接到 audiosegmentclip。这是如何工作的?
tee name=atee vtee. ! queue
在上面的行中有一个名为 atee 的 tee 紧跟在 vtee 之后。这是什么意思?元素后面加句号(.)有什么意义?
任何解释 gstreamer 管道语法的链接都会非常有帮助。
【问题讨论】:
-
您需要将 bin 链接到队列 @987654325@ 和 tee
tee name=vtee ! queue name=aqueue... -
这给了我一个不同的错误 GST_PIPELINE 语法。y:616:gst_parse_perform_link: could not link aqueue to aclip
-
这是有道理的,因为您正在尝试向其发送视频剪辑...
-
感谢特伦特。我是 gstreamer 的新手。我的目标是拆分音频和视频流,然后用特定的比特率对其进行编码,然后再将其混合。为此,我该如何修改此管道。
-
那么,从文件中读取,将音频和视频移动到特定的比特率,然后再次将它们混合在一起,对吗?
标签: gstreamer