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

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。