要點總結
audioTracks
對象,理論上允許為音頻描述實現開關按鈕,並分別控制音頻和視頻音量。但是,目前瀏覽器對該功能的支持有限。 MediaController
,這是 HTML5 音頻和視頻的一項功能,允許同步多個來源。此功能目前在瀏覽器支持方面也受到限制,但可以使用現有的、廣泛實現的功能同時啟動兩個媒體文件並保持同步。 audioTracks
對象,這使得實現開關按鈕並分別控制音頻和視頻音量成為可能。但它的瀏覽器支持幾乎不存在——在撰寫本文時,只有 IE10 支持此功能。無論如何,我的客戶想要的是一個單獨文件中的音頻描述,可以將其添加到視頻中,而無需創建單獨的版本,並且無需使用專用軟件即可輕鬆製作。當然,它必須在相當多的瀏覽器中運行。所以我的下一個想法是使用 MediaController
,這是 HTML5 音頻和視頻的一項功能,允許您同步多個來源。但是,對它的瀏覽器支持同樣很少——在撰寫本文時,只有 Chrome 支持此功能。但是您知道——即使沒有這種支持,同時啟動兩個媒體文件顯然也不是問題,只是需要保持同步。那麼,我們能否使用現有的、廣泛實現的功能來實現這一點呢?視頻事件視頻 API 提供了許多我們可以掛鉤的事件,這些事件應該可以使音頻播放與視頻事件同步:
“timeupdate”事件非常關鍵。它觸發的頻率沒有指定,實際上差異很大——但作為一個粗略的整體平均值,它相當於每秒 3-5 次,這足以滿足我們的目的。我見過類似的方法來嘗試同步兩個視頻文件,但這並不特別成功,因為即使是很小的差異也很明顯。但是音頻描述通常不需要如此精確地同步——無論哪種方式,100 毫秒的延遲都是可以接受的——而且播放音頻文件對瀏覽器的負擔要小得多。因此,我們只需要使用現有的視頻事件來將音頻和視頻播放鎖定在一起:
經過一番試驗,我發現通過比較以秒為單位的時間可以獲得最佳效果,如下所示:
<code class="language-javascript">if(Math.ceil(audio.currentTime) != Math.ceil(video.currentTime)) { audio.currentTime = video.currentTime; }</code>
這看起來違反直覺,起初我以為我們需要盡可能精確的數據,但事實似乎並非如此。通過使用視頻音軌的文字音頻副本(即音頻和視頻都產生相同的聲音)進行測試,很容易聽到同步效果好壞。根據這個基礎進行實驗,我發現四捨五入數字比不四捨五入得到更好的同步效果。因此,這是最終腳本。如果瀏覽器支持 MediaController
,我們只需使用它,否則我們將實現手動同步,如下所述:
<code class="language-javascript">var video = document.getElementById('video'); var audio = document.getElementById('audio'); if(typeof(window.MediaController) === 'function') { var controller = new MediaController(); video.controller = controller; audio.controller = controller; } else { controller = null; } video.volume = 0.8; audio.volume = 1; video.addEventListener('play', function() { if(!controller && audio.paused) { audio.play(); } }, false); video.addEventListener('pause', function() { if(!controller && !audio.paused) { audio.pause(); } }, false); video.addEventListener('ended', function() { if(controller) { controller.pause(); } else { video.pause(); audio.pause(); } }, false); video.addEventListener('timeupdate', function() { if(!controller && audio.readyState >= 4) { if(Math.ceil(audio.currentTime) != Math.ceil(video.currentTime)) { audio.currentTime = video.currentTime; } } }, false);</code>
請注意,MediaController
本身僅通過腳本定義,而可以使用靜態“mediagroup”屬性定義控制器:
<code class="language-html"><video mediagroup="foo"></video> ... <audio mediagroup="foo"> ... </audio></code>
如果我們這樣做,那麼它將在 Chrome 中無需 JavaScript 即可工作。它將同步媒體源,但用戶無法控制音頻(包括無法將其關閉),因為瀏覽器不知道音頻代表什麼。在這種情況下,最好將音頻編碼到視頻中,因為然後它可以出現在 audioTracks
對像中,瀏覽器可以識別它並能夠提供本機控件。但是由於我們沒有 audioTracks
數據,所以這是一個無關緊要的問題!因此,如果腳本不可用,音頻將根本無法播放。這是最終演示,它可以在任何最新版本的 Opera、Firefox、Chrome、Safari 或 IE9 或更高版本中運行:- 音頻描述演示
可訪問音頻描述在使 HTML5 視頻更具包容性和用戶友好性方面發揮著至關重要的作用。它們提供了視覺信息的聽覺等效項,這對視力障礙用戶尤其有益。這些描述敘述了主要音軌無法理解的重要視覺細節。通過加入可訪問的音頻描述,內容創作者可以確保他們的視頻能夠被更廣泛的受眾訪問,從而促進數字包容性。
將音頻描述添加到 HTML5 視頻包括幾個步驟。首先,您需要創建一個單獨的音頻軌道來描述視頻的視覺元素。這可以使用各種音頻編輯軟件來完成。一旦音頻描述軌道準備就緒,您可以使用帶有設置為“descriptions”的 kind 屬性的 元素將其添加到您的 HTML5 視頻中。這將確保音頻描述軌道被識別並與視頻一起播放。
您的 HTML5 視頻無法播放可能有幾個原因。這可能是由於視頻文件本身的問題,例如未正確編碼。這也可能是由於 Web 瀏覽器或視頻播放器不支持視頻格式的問題。要進行故障排除,請嘗試在不同的瀏覽器或不同的設備上播放視頻。如果問題仍然存在,您可能需要檢查視頻文件並確保其格式受 HTML5 支持。
HTML5 視頻支持幾種常見的視頻格式,包括 MP4、WebM 和 Ogg。 MP4 格式在所有主要瀏覽器和設備中都得到廣泛支持,使其成為網絡視頻的熱門選擇。 WebM 和 Ogg 是開源格式,也得到廣泛支持,儘管它們可能並非在所有瀏覽器中都能正常工作。
“找不到 HTML5 視頻文件”錯誤通常發生在瀏覽器找不到 <video></video>
元素的 source 屬性中指定的視頻文件時。要修復此錯誤,請確保 source 屬性中的文件路徑正確,並且視頻文件位於指定的路徑中。如果文件路徑正確,請檢查視頻文件是否採用 HTML5 和瀏覽器支持的格式。
要使您的 HTML5 視頻具有響應性,您可以使用 CSS 將視頻的寬度設置為 100%,高度設置為 auto。這將確保視頻按比例放大或縮小以適應其容器的寬度,使其能夠響應不同的屏幕尺寸。
是的,您可以使用帶有設置為“captions”或“subtitles”的 kind 屬性的 元素向您的 HTML5 視頻添加字幕或旁白。您需要創建一個包含字幕或旁白的 WebVTT 文件,然後在 元素的 src 屬性中引用此文件。
HTML5 提供了幾種內置的視頻播放控件,包括播放、暫停、音量和全屏。可以通過向 <video></video>
元素添加 controls 屬性來啟用這些控件。此外,您可以使用 JavaScript 創建自定義控件和交互。
是的,您可以使用 <video></video>
元素在您的網站上嵌入 HTML5 視頻。您需要使用 src 屬性指定視頻文件的來源,還可以添加可選屬性(如 controls、autoplay 和 loop)來自定義視頻播放。
HTML5 為視頻播放提供了許多好處。它支持多種視頻格式,提供內置的視頻播放控件,並允許添加諸如字幕和音頻描述之類的輔助功能。此外,HTML5 視頻可以具有響應性,確保它們在所有設備和屏幕尺寸上看起來都很好。最後,由於 HTML5 是 Web 標準,因此所有現代 Web 瀏覽器都支持它,無需額外的插件或軟件。
以上是HTML5視頻的可訪問音頻說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!