View a markdown version of this page

IVS Web 播放器 SDK 中的已知問題和解決方法 - Amazon IVS

IVS Web 播放器 SDK 中的已知問題和解決方法

本文件列出您在使用 Amazon IVS Web 播放器 SDK 時可能遇到的已知問題,並建議潛在的解決方法。

  • 在 Chrome 上使用 IVS Web Player SDK v1.33.0+ 搭配 JW Player 時,在使用者互動 (例如,按一下取消靜音、暫停/繼續或頁面上的任何其他位置) 之後,播放可能會失敗,並顯示錯誤 290000 (MEDIA_ELEMENT_ERROR:無法連接 MediaSource)。

    解決方法:攔截 Web Worker 建立,在工作者內容中停用 MSE-in-Workers,然後再新增 amazon-ivs-jw-provider 指令碼標籤。例如:

    <script> (function disableMSEInWorkersForIVS() { try { if (typeof window.MediaSource === 'undefined') return; Object.defineProperty(window.MediaSource, 'canConstructInDedicatedWorker', { value: false, configurable: true, writable: true, }); console.log('[workaround] canConstructInDedicatedWorker now:', window.MediaSource.canConstructInDedicatedWorker); } catch (e) { console.warn('[workaround] failed to override canConstructInDedicatedWorker', e); } })(); </script> <script src="https://player.live-video.net/1.53.0/amazon-ivs-jw-provider.min.js"> </script>
  • 在 iOS 行動裝置瀏覽器 (例如 Safari 或 Chrome) 上播放錄製的內容 (也稱為 VOD) 時,向後搜尋將會使播放器靜音。

    解決方法:移至其他影片位置後呼叫 player.setMuted(false)

  • 在 iOS 行動裝置瀏覽器上播放錄製的內容時,直接選擇所需位置時,向後搜尋會間歇性地運作。

    解決方法:將拖動條拖曳至所需位置。

  • 在 iOS 行動瀏覽器上播放錄製內容時,player.seekTo() 呼叫無法穩定運作。

    解決方法:loadeddata 事件後為影片 HTML 元素設定 currentTime。例如:

    videoEl.addEventListener('loadeddata', () => { videoEl.currentTime = 30; // seek 30s from the beginning });
  • 在 iOS 行動裝置瀏覽器上播放即時串流或錄製的內容時,字幕可能不會以不同的大小呈現,而且可能會重新呈現多次。

    解決方法:無。

  • 在 iOS 行動瀏覽器上播放即時串流或錄製內容時,player.getQualities() 呼叫未傳回可用品質清單。

    解決方法:無。在 iOS 瀏覽器上,播放器僅支援自動品質模式。

  • 啟用本機 HTML5 控制項時,呼叫 setQuality() 會遭到忽略。

    解決方法:在呼叫 player.setQuality() 之前停用 HTML5 控制項。

  • 在 iOS 行動瀏覽器上播放靜音的即時串流時,恢復非使用中的播放器分頁 (例如分頁切換或裝置鎖定/解鎖) 時,可能會出現播放器不穩定 (例如黑色畫面或螢幕凍結、緩衝) 的現象。

    解決方法:使用 JavaScript Page Visibility API 偵測頁面可見性變更,然後對播放器採取相應的動作。例如:

    //if client platform is iOS if (!!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform)) { document.addEventListener(“visibilitychange”, () => { if (document.visibilityState === “hidden” && player.isMuted()) { player.pause() if (document.visibilityState === “visible” && player.getState() != PlayerState.PLAYING) { player.play() } }) }
  • 在 iOS Safari 上使用 Web 播放器 SDK 時,如果沒有服務工作程序,播放授權無法正常運作,這是因為 iOS 對 Media Source Extensions (MSE) 的支援有限。

    解決方法:使用播放器 SDK 實作服務工作程序。請參閱設定服務工作程序和此示範