我正在使用HTML5为我的网站制作视频。理想情况下,我只有一个静音视频文件,以及与视频同步的五种不同语言的不同音轨。
然后我会有一个按钮,允许用户在音频轨道之间切换,即使视频正在播放;并且正确的音频轨道将变为现实(没有视频暂停或重新开始或任何东西;很像DVD音轨选择)。
我可以在Flash中完成这项工作,但我不想这样做。必须有一种方法可以在纯HTML5或HTML5 + jQuery中执行此操作。我想你要播放0音量的所有音频文件,只增加活动音轨的音量...但我不知道怎么做,更不用说在用户暂停或倒带时处理它视频......
提前致谢!
答案 0 :(得分:9)
音频和视频之间的同步远比简单地同时启动音频和视频复杂得多。声卡将以略微不同的速率播放。 (对我而言,44.1 kHz是多少,实际上可能是44.095 kHz。)
通常,视频会与音频流同步,但播放器会处理此问题。通过加载多个对象进行回放,您实际上会使它们不同步。
唯一可行的方法是,如果您能找到一种方法来控制视频播放器中的不同音频流。我不知道这是否可能。
相反,我建议您使用不同的流对视频进行多次编码。您可以使用FFMPEG进行此操作,甚至可以根据您的工作流程自动执行此过程。流之间的切换成为一个问题,但是当给定比特率时,大多数视频播放器足够强大,可以猜测文件中的字节偏移。
如果您只需要两种语言,则只需调整左右立体声音频通道之间的平衡即可。
答案 1 :(得分:4)
如果您愿意让所有五首曲目下载,为什么不将它们复制到视频中呢?视频不限于单个音轨(即使AVI可以执行多个音轨)。然后应该为您处理同步。您只需根据需要启用/禁用音轨。
答案 2 :(得分:4)
可以使用Web Audio API。
我程序的一部分会侦听视频元素事件,并停止或重新启动使用网络音频API创建的音轨。这使我能够以完美同步方式打开和关闭任何曲目。
有一些缺点。
除了Edge之外,Internet Explorer中没有Web Audio API支持。
该技术仅适用于缓冲音频,这是限制性的。大文件存在一些问题:https://bugs.chromium.org/p/chromium/issues/detail?id=71704