Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .ogg文件的HTMLMediaElement.duration不一致_Javascript_Html5 Audio - Fatal编程技术网

Javascript .ogg文件的HTMLMediaElement.duration不一致

Javascript .ogg文件的HTMLMediaElement.duration不一致,javascript,html5-audio,Javascript,Html5 Audio,我正在尝试使用htmlemdiaelement.duration对音频文件进行精确计时。但在Chrome上,播放.ogg文件时,在音频的最后几秒钟,持续时间值会发生变化。这里有一个简单的例子来说明这个问题。我使用Audacity生成了一个5s.ogg粉红色噪音文件,并将其用作源 <audio id="audio" controls> <source src="./noise.ogg" type="audio/ogg"> </audio> 首先,它输出

我正在尝试使用htmlemdiaelement.duration对音频文件进行精确计时。但在Chrome上,播放.ogg文件时,在音频的最后几秒钟,持续时间值会发生变化。这里有一个简单的例子来说明这个问题。我使用Audacity生成了一个5s.ogg粉红色噪音文件,并将其用作源

<audio id="audio" controls>
    <source src="./noise.ogg" type="audio/ogg">
</audio>
首先,它输出“5”10次,然后再更改为“5.000997”11次。另一个文件输出“31.318662”和“31.320816”。这是什么原因造成的


相关:

您是否尝试过等待
loadedmetadata
事件,然后记录持续时间?也有可能这种文件会随着加载的数据量的增加而改变持续时间,至少这是我的第一个预感。@something当文件是本地文件时,它几乎会在我手动开始播放之前立即加载。我可以长时间坐在那里不按play键,然后它会正确地返回“5”作为持续时间。只有当我到达音频的最后几秒钟时,持续时间才会永久改变。老实说,这似乎表明OGG文件是根据需要加载的。可能在触发
canplaythrough
事件时签出?设置
preload
属性?@somethinghere
canplaythrough
默认情况下在
loadedmetadata
之后立即启动,但是如果我将
preload
更改为
auto
,则在按play时加载它们。不过我发现了一些奇怪的东西。当我在结束后搜索音频时,它会增加持续时间(对于Chrome中的.ogg文件)。
audio.addEventListener('timeupdate', function() {
    console.log(audio.duration);
})