簡體   English   中英

GStreamer 卷插件似乎對卷屬性更改反應緩慢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM