Javascript HTML5音频播放器中的不一致搜索
我想从特定的时间戳开始播放音频。但我连最简单的例子都做不好。我尝试了以下方法,也修改了Javascript HTML5音频播放器中的不一致搜索,javascript,html,cordova,audio,Javascript,Html,Cordova,Audio,我想从特定的时间戳开始播放音频。但我连最简单的例子都做不好。我尝试了以下方法,也修改了 玩 var-secs=32; 函数播放(){ var p=document.getElementById(“音频”); p、 当前时间=秒; console.log('每秒播放:'+秒); p、 play(); } 但每个浏览器上播放的音频不同:Chrome for Windows大约晚了4秒,Chrome for Android似乎很流行,Mobile Safari关闭。(即使是VLC在播放文件时也存在
玩
var-secs=32;
函数播放(){
var p=document.getElementById(“音频”);
p、 当前时间=秒;
console.log('每秒播放:'+秒);
p、 play();
}
但每个浏览器上播放的音频不同:Chrome for Windows大约晚了4秒,Chrome for Android似乎很流行,Mobile Safari关闭。(即使是VLC在播放文件时也存在此问题。)如果从文件的开头开始播放,则它们保持同步
因此,在我看来,HTML5音频标准要么实施不当,要么解释不当
我已经读到服务器端支持有时是罪魁祸首,但我不确定当我阅读本地文件时这会是一个什么问题。最终,我想在科尔多瓦项目中实现这一点
有什么想法吗?问题在于文件编码。对于MP3文件,只有恒定比特率搜索才能在所有浏览器中正确/一致地工作。W3表示MP3是所有浏览器都支持的唯一官方格式,所以我认为使用CBR MP3就是答案。也就是说,Mozilla在格式支持方面有更多的优势 当比特率不恒定时,浏览器会在给定相同时间戳的情况下搜索不同的音频段。对于恒定比特率,搜索算法很简单,但对于可变比特率,搜索算法更复杂(通常涉及某种形式的估计);我在HTML标准中找不到这个操作的定义,所以不同的浏览器以不同的方式实现也就不足为奇了
有更多的讨论和潜在的解决方法。我遇到了同样的问题,我通过将MP3文件转换为CBR(恒定比特率)格式解决了这个问题。然后,它可以解决当前时间与真实声音之间的不一致问题
步骤:
- 下载并安装“Audacity”(对任何平台都是免费的)
- 打开你的MP3文件
- 单击[File]->[Export]->[Options]->[Constant](请参阅:)
- Audacity将要求您提供蹩脚的MP3编码器 (请参阅:[下载并安装LAME MP3编码器])
另见:
<body>
<audio src="skyfall.mp3" id="audio" controls preload></audio>
<button onclick="play()">Play</button>
</body>
<script type="text/javascript">
var secs = 32;
function play(){
var p = document.getElementById("audio");
p.currentTime = secs;
console.log('Playing at secs: ' + secs);
p.play();
}
</script>