[英]GStreamer volume plugin seems slow to react to volume property change
我目前正在使用 GStreamer 和 Qt 構建一個小型視頻播放器(和切割器)。我的管道如下:
| | -> video -> | Queue | -----------------------------------------------------> | PlaySink |
| UriDecodeBin | -> audio1 -> | Queue | -> | AudioConvert | -> | Volume | -> | AudioMixer | -> | |
| | -> audio2 -> | Queue | -> | AudioConvert | -> | Volume | -> | |
Volume 是來自https://gstreamer.freedesktop.org/documentation/volume/index.html?gi-language=c的插件 播放很好,暫停和搜索也是如此,但是當我嘗試改變音量時(同時播放視頻)使用以下調用:
g_object_set(_volumes[track], "volume", value, NULL);
大約1秒后才能聽到變化,感覺極其緩慢。
這個插件(和/或整個管道)是否會出現這種延遲?
如果不是,我怎樣才能改善更改的延遲?
如果是,是否有任何其他插件可以用來更改反應更快的音量?
注意:插入的圖片比較寬,如果想放大請在新標簽頁打開
答案來自打印完整的管道:延遲是由playsink
元素引起的。
因此,我在問題中使用的舊管道如下所示:
我們可以在這里看到 playsink 創建了兩個隊列,一個用於音頻aqueue
,一個用於視頻vqueue
,並且這些隊列使用默認緩沖設置,允許最多一秒的緩沖,這或多或少與延遲相對應我在修改volume
元素的體積參數時遇到過。
為了解決這個問題,我首先研究了為 playsink 配置隊列大小,但沒有成功,所以我簡單地從管道中刪除了 playsink,現在看起來是這樣的:
音頻隊列audioQueue
設置為允許最多 50 毫秒的緩沖,這使得音頻音量變化非常敏感。
我沒有像 playsink 使用的那樣添加 StreamSynchronizer。 同步似乎沒問題。 我會嘗試弄清楚我的情況(單管道)是否需要它,如果我找到答案,我會在這里更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.