GStreamer 自定义管道代替 playbin

问题描述 投票:0回答:1

我正在尝试使用 GStreamer 而不是使用 playbin 构建自定义管道,到目前为止我已经有了这个超级基本的设置:

filesrc -> decodebin -> streamsynchronizer -> xvimagesink
                                           -> autoaudiosink

(流同步器同时连接到 xvimagesink 和 autoautdiosink)

当我将管道状态更改为“播放”时,视频和音频一切正常,当我想通过将其状态设置为“暂停”来暂停管道,然后再次“播放”时,视频保持静止,而音频继续按预期播放:/

我开始失去理智,因为 playbin 元素运行良好;(

gstreamer gstreamer-1.0
1个回答
0
投票

在我的情况下,以下管道可以正常暂停和恢复:

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 内存中。如果在您的情况下它将视频输出到系统内存中,您将删除它。

© www.soinside.com 2019 - 2024. All rights reserved.