目錄
最近一位客戶要求我製作一個無障礙視頻播放器,她非常希望其中一個功能是音頻描述。音頻描述面向盲人或視力障礙者,提供額外的語音信息來描述重要的視覺細節。傳統上,帶有音頻描述的視頻必須專門製作,音頻編碼在單個視頻文件的單獨音軌中。這需要相當專業的視頻編輯設備來編碼這些音頻軌道,這使得大多數內容創作者難以實現。我在網上看到的所有帶有音頻描述的內容都是這樣的。例如,BBC iPlayer 提供了一些此類內容,但視頻播放器無法控制相對音量,也無法關閉音頻描述——您只能觀看節目的單獨描述版本或非描述版本。 HTML5 的登場
HTML5 視頻規範確實提供了 audioTracks 對象,這使得實現開關按鈕並分別控制音頻和視頻音量成為可能。但它的瀏覽器支持幾乎不存在——在撰寫本文時,只有 IE10 支持此功能。無論如何,我的客戶想要的是一個單獨文件中的音頻描述,可以將其添加到視頻中,而無需創建單獨的版本,並且無需使用專用軟件即可輕鬆製作。當然,它必須在相當多的瀏覽器中運行。所以我的下一個想法是使用 MediaController,這是 HTML5 音頻和視頻的一項功能,允許您同步多個來源。但是,對它的瀏覽器支持同樣很少——在撰寫本文時,只有 Chrome 支持此功能。但是您知道——即使沒有這種支持,同時啟動兩個媒體文件顯然也不是問題,只是需要保持同步。那麼,我們能否使用現有的、廣泛實現的功能來實現這一點呢?視頻事件
當然,這只是一個簡單的概念驗證演示——沒有初始功能檢測,它只具有本機“controls”屬性提供的基本控件。對於正確的實現,它需要自定義控件,以提供(除其他外)一個開關音頻的按鈕和單獨的音量滑塊。界面也應該可以通過鍵盤訪問,這在某些瀏覽器的本機控件中並非如此。它還需要正確處理緩衝——實際上,如果您搜索到視頻已預加載的點之後,音頻將繼續自由播放,直到視頻加載足夠多以將其重新同步為止。我還想提一下,描述本身幾乎達不到專業標準!那是您可以聽到我的聲音,使用 Audacity 錄製和轉換。但就是這樣,我認為它有效地演示了這種方法的技術門檻有多低。我不必編輯視頻,而且我用免費軟件在一小時內製作了音頻。作為一個概念證明,我認為它非常成功——我相信我的客戶會非常滿意!關於 HTML5 視頻的可訪問音頻描述的常見問題解答 (FAQ)
HTML5 視頻中可訪問音頻描述的重要性是什麼?
如何在我的 HTML5 視頻中添加音頻描述?
為什麼我的 HTML5 視頻無法播放?
HTML5 視頻支持哪些常用格式?
如何修復“找不到 HTML5 視頻文件”錯誤?
如何使我的 HTML5 視頻具有響應性?
我可以向我的 HTML5 視頻添加字幕或旁白嗎?
如何控制我的 HTML5 視頻的播放?
我可以在我的網站上嵌入 HTML5 視頻嗎?
使用 HTML5 進行視頻播放的好處是什麼?
首頁 web前端 js教程 HTML5視頻的可訪問音頻說明

HTML5視頻的可訪問音頻說明

Feb 23, 2025 am 08:48 AM

Accessible Audio Descriptions for HTML5 Video

要點總結

  • 傳統的視障人士輔助音頻描述需要專業的視頻編輯設備進行編碼,將其嵌入視頻文件的單獨音軌中。對大多數內容創作者來說,這個過程通常不切實際。
  • 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1414
52
Laravel 教程
1307
25
PHP教程
1253
29
C# 教程
1228
24
神秘的JavaScript:它的作用以及為什麼重要 神秘的JavaScript:它的作用以及為什麼重要 Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的演變:當前的趨勢和未來前景 JavaScript的演變:當前的趨勢和未來前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript引擎:比較實施 JavaScript引擎:比較實施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript:探索網絡語言的多功能性 JavaScript:探索網絡語言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

如何使用Next.js(前端集成)構建多租戶SaaS應用程序 如何使用Next.js(前端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

從C/C到JavaScript:所有工作方式 從C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

如何安裝JavaScript? 如何安裝JavaScript? Apr 05, 2025 am 12:16 AM

JavaScript不需要安裝,因為它已內置於現代瀏覽器中。你只需文本編輯器和瀏覽器即可開始使用。 1)在瀏覽器環境中,通過標籤嵌入HTML文件中運行。 2)在Node.js環境中,下載並安裝Node.js後,通過命令行運行JavaScript文件。

See all articles