我的系統出現音頻問題,導致偶爾出現裂紋或卡頓,以及視頻/音頻不同步。
不同的程式和背景關系對此有不同的處理方式。因此,對于我最常見的 YouTube 視頻情況,我可以通過簡單地在 1 秒后暫停和取消暫停視頻來重新同步“Quantum”之前的 Firefox (v<57) 上的 A/V;但是在像 Chrome v96.0.4664.45(官方版本)(64 位)這樣的現代瀏覽器上,舊的、未對齊的緩沖區被保留了下來。
當然,當事情進展順利時這很聰明,但如果事情出錯怎么辦?
我想知道如何使緩沖區無效,觸發對音頻和視頻軌道的重新評估,在我的情況下,以確保它們再次同步。 HTMLMediaElement.buffered是只讀的,其中的 range 物件也不提供任何修改介面。
我的天真方法:替換 src 值(參考)
我仍然缺乏解決方案的最常見問題是網路瀏覽器中的視頻,最常見的是 YouTube 上的視頻。
我嘗試通過使用井號 (" ")src附加查詢字串videoElement.src = "?refresh=" Math.random(0,1);或僅附加“哈希”/DOM 參考來更改值#,但 YouTube 在我正在操作的所有常用 blob 資源上回傳“未找到” .
現在我被困住了。
我正在查看的似乎有用的 DOM 元素的所有屬性都是只讀的(如HTMLMediaElement.buffered范圍)
有沒有辦法向瀏覽器發出信號使迄今為止組裝的 A/V 緩沖區無效并根據當前時間位置重新評估事物?
uj5u.com熱心網友回復:
前幾天我重新審視了這個問題。
事實證明,一個簡單的呼叫就.load()可以解決問題???♂?
這在瀏覽器和 webapps 之間可能有所不同,但無論如何這應該是一個很好的起點:
function reloadMedia(v){
var t = v.currentTime;
v.load();
v.play(); // usually not needed; included for good measure
v.currentTime = t; // usually not needed; included for good measure
}
就目前的 Chrome 和 YouTube 而言,即使不重新設定時間和play()再次呼叫,它似乎也能正常運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/390067.html
標籤:javascript dom 浏览器
上一篇:加載頁面時,僅在滾動(分頁)后顯示的資料是否屬于dom的一部分?
下一篇:在c中隨機生成一個生日日期
