使用C920将Gstreamer 1.8.2安装在嵌入式设备上。 Debian Linux。我有一个很好的Gstreamer管道,它使用新的splitmuxsink并几乎可以工作。
我确实让splitmuxsink很好地在“基本管道”上工作。

第一个管道可以工作并写入一个长文件mp4,音频和视频,并同时将jpeg预览流传递到一个单独处理的appink。希望这对任何人都有用。

    self.pipeline=Gst.parse_launch('uvch264src auto-start=true iframe-period=1000 name=src1 src1.vfsrc ! queue  ! appsink drop=true name=asink max-buffers=2 emit-signals=true sync=false src1.vidsrc ! video/x-h264,width=1280,height=720,framerate=30/1,stream-format=byte-stream ! queue ! h264parse ! muxout.video_0   alsasrc do-timestamp=true device="plughw:CARD=C920,DEV=0" ! audio/x-raw,format=S16LE,rate=32000,depth=16,channels=1 ! queue ! voaacenc ! queue ! aacparse ! muxout.audio_0 mp4mux name=muxout ! filesink sync=false location=%s' % location1)

但是,当我将文件接收器转换为“splitmuxsink”时,它只会创建预览,而不会启动流的文件记录端。我不知道如何(在Python中以编程方式)设置splitmuxsink的属性来复制我在filesink插件上所做的sync = false。我是否要附加到splitmuxsink上的焊盘上,还是以某种方式设置接收器= xxx标签和get_static_pad或元素,然后调整该“子”元素的属性?我相信此问题是导致管道的文件拆分部分失败的原因。我正在寻找类似的东西:
How to resume playing after paused using gstreamer?
基于以下答案:gstreamer pipeline with VADER element stalls on PAUSE when used with a tee

管道v2(运行appsink端,但是splitmuxsink保持暂停状态)
    self.pipeline=Gst.parse_launch('uvch264src auto-start=true async-handling=false message-forward=true iframe-period=1000 name=src1 src1.vfsrc ! queue  ! appsink drop=true name=asink max-buffers=200 emit-signals=true sync=true src1.vidsrc ! video/x-h264,width=1280,height=720,framerate=30/1,stream-format=byte-stream ! queue  ! h264parse ! queue ! splitmuxsink max-size-time=20000000000 max-size-bytes=5000000 name=muxout location=video2%05d.mp4  alsasrc do-timestamp=true device="plughw:CARD=C920,DEV=0" ! audio/x-raw,forma=S16LE,rate=32000,depth=16,channels=1 ! queue ! voaacenc ! queue ! aacparse ! muxout.audio_0

如您所见,管道v2没有对sync = false的明确引用,因为splitmuxsink没有该属性。因此暂停后该侧将不会开始。

我敢肯定,这将是一个很小的调整,以创建正确的标签并在我之后设置其属性
    self.muxp = self.pipeline.get_by_name('muxout')

将子元素设置为异步false,但我看不到-muxout元素(我的splitmuxsink标签)没有async属性。

最佳答案

与开发团队联系后,我被告知开发人员在1.8.3中更正了拆分muxsink中的错误。 1.8.3的更新解决了该问题。

10-08 11:59