我正在尝试使用 GStreamer 而不是使用 playbin 构建自定义管道,到目前为止我已经有了这个超级基本的设置:
filesrc -> decodebin -> streamsynchronizer -> xvimagesink
-> autoaudiosink
(流同步器同时连接到 xvimagesink 和 autoautdiosink)
当我将管道状态更改为“播放”时,视频和音频一切正常,当我想通过将其状态设置为“暂停”来暂停管道,然后再次“播放”时,视频保持静止,而音频继续按预期播放:/
我开始失去理智,因为 playbin 元素运行良好;(
在我的情况下,以下管道可以正常暂停和恢复:
filesrc location=test.mp4 ! decodebin name=dec streamsynchronizer name=ss dec.src_0 ! queue ! ss.sink_0 dec.src_1 ! queue ! ss.sink_1 ss.src_0 ! queue ! autovideosink filter-caps="video/x-raw(memory:NVMM)" ss.src_1 ! queue ! audioconvert ! autoaudiosink
请注意,我为 autovideosink 添加了一个 filter-caps 属性,因为在我的例子中,decodin 选择 HW 解码器输出到 NVMM 内存中。如果在您的情况下它将视频输出到系统内存中,您将删除它。