0

任何人都可以帮助我了解如何通过parsebin元素在 Gstreamer 中使用 vorbis 吗?在下面的示例中,我使用带有一个视频 (h264) 和一个音频 (vorbis) 流的 matroska 文件。

例如下一个案例(使用 auto****sink w/o vorbisparse 使用 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

工作(使用单独的文件接收器vorbisparse):使用带有 vorbisparse 的单独文件接收器

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):使用多队列、单独的文件接收器和 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):使用多队列、单文件接收器和 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元素并获得根据需要转码或转码流的能力。例如:

  • 视频 => 转换,音频 => 转换
  • 视频 => 转换,音频 => 转码
  • 视频 => 转码,音频 => 转码
  • 视频 => 转码,音频 => 转码

我将感谢您的澄清和帮助

4

0 回答 0