任何人都可以帮助我了解如何通过parsebin元素在 Gstreamer 中使用 vorbis 吗?在下面的示例中,我使用带有一个视频 (h264) 和一个音频 (vorbis) 流的 matroska 文件。
例如下一个案例(使用 auto****sink w/o vorbisparse ):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb pb. ! queue ! avdec_h264 ! videoconvert ! autovideosink pb. ! queue ! vorbisdec ! audioconvert ! autoaudiosink
但在这种情况下,所有挂起(使用 auto****sink和 vorbisparse)
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb pb. ! queue ! avdec_h264 ! videoconvert ! autovideosink pb. ! queue ! vorbisparse ! vorbisdec ! audioconvert ! autoaudiosink
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb pb. ! queue ! matroskamux ! filesink location=d:/v.mkv pb. ! queue ! vorbisparse ! matroskamux ! filesink location=d:/a.mkv
挂起(使用不带 vorbisparse的单独文件接收器):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb pb. ! queue ! matroskamux ! filesink location=d:/v.mkv pb. ! queue ! matroskamux ! filesink location=d:/a.mkv
工作(使用多队列,单独的文件接收器和 vorbisparse):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb ! multiqueue name=mq pb. ! mq. mq.src_0 ! matroskamux name=mux ! filesink location="d:/v.mkv" mq.src_1 ! vorbisparse ! matroskamux ! filesink location="d:/a.mkv"
挂起(使用多队列、单个文件接收器和 vorbisparse):
gst-launch-1.0 filesrc location="h264.Vorbis.10sec.mkv" ! parsebin name=pb ! multiqueue name=mq pb. ! mq. mq.src_0 ! matroskamux name=mux ! filesink location="d:/va.mkv" mq.src_1 ! vorbisparse ! mux.
PS 我的主要目标是使用这个parsebin元素并获得根据需要转码或转码流的能力。例如:
- 视频 => 转换,音频 => 转换
- 视频 => 转换,音频 => 转码
- 视频 => 转码,音频 => 转码
- 视频 => 转码,音频 => 转码
我将感谢您的澄清和帮助