要点总结
audioTracks
对象,理论上允许为音频描述实现开关按钮,并分别控制音频和视频音量。但是,目前浏览器对该功能的支持有限。MediaController
,这是 HTML5 音频和视频的一项功能,允许同步多个来源。此功能目前在浏览器支持方面也受到限制,但可以使用现有的、广泛实现的功能同时启动两个媒体文件并保持同步。audioTracks
对象,这使得实现开关按钮并分别控制音频和视频音量成为可能。但它的浏览器支持几乎不存在——在撰写本文时,只有 IE10 支持此功能。无论如何,我的客户想要的是一个单独文件中的音频描述,可以将其添加到视频中,而无需创建单独的版本,并且无需使用专用软件即可轻松制作。当然,它必须在相当多的浏览器中运行。所以我的下一个想法是使用 MediaController
,这是 HTML5 音频和视频的一项功能,允许您同步多个来源。但是,对它的浏览器支持同样很少——在撰写本文时,只有 Chrome 支持此功能。但是您知道——即使没有这种支持,同时启动两个媒体文件显然也不是问题,只是需要保持同步。那么,我们能否使用现有的、广泛实现的功能来实现这一点呢?视频事件视频 API 提供了许多我们可以挂钩的事件,这些事件应该可以使音频播放与视频事件同步:
“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 或更高版本中运行:- 音频描述演示
可访问音频描述在使 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中文网其他相关文章!