我一直在使用html音频标签来播放一些音频文件。音频播放正常,但音频标签的持续时间属性总是返回无穷大。
我尝试了this问题的公认答案,但结果相同。用Chrome,IE和Firefox测试。
这是音频标签的错误,还是我错过了什么?
我用来播放音频文件的一些代码。
javascript函数当播放按钮是按下
function playPlayerV2(src) {
document.getElementById("audioplayerV2").addEventListener("loadedmetadata", function (_event) {
console.log(player.duration);
});
var player = document.getElementById("audioplayer");
player.src = "source";
player.load();
player.play();
}
html中音频标签
<audio controls="true" id="audioplayerV2" style="display: none;" preload="auto">
注:我隐藏了标准的音频播放器,目的是使用自定义布局,并通过javascript使用播放器,这似乎与我的问题无关。
7条答案
按热度按时间slmsl1lt1#
试试这个
u5i3ibmn2#
我认为这是由于chrome bug造成的。在修复之前:
bpsygsoo3#
这对我有用
9o685dep4#
如果您控制服务器,并可以使其发送适当的媒体头-这是什么帮助OP。
我遇到了这个问题与文件存储在谷歌驱动器时,让他们在移动的版本的Chrome浏览器。我不能控制谷歌驱动器的React,我必须以某种方式处理它。
我还没有一个能让我满意的解决方案,但我尝试了两个答案中的想法--基本上是一样的:创建音频/视频对象来寻找资源的真实的结束位置。当Chrome找到真正的结束位置后-它会给你持续时间。但是结果并不令人满意。
这个黑客真正做的是--它强迫Chrome将资源完全地加载到内存中。所以,如果资源太大,或者连接太慢,你最终会在幕后等待很长时间才能下载文件。而且你无法控制那个文件--它是由Chrome处理的,一旦它决定不再需要它--它就会处理掉它。因此带宽可能被低效地使用。
因此,如果您可以自己加载文件-最好下载它(例如,作为blob)并将其馈送到您的音频/视频控件。
uyto3xhc5#
如果这是一个Twilio的mp3,尝试.wav版本。mp3是作为一个流来,它愚弄了音频播放器。
要使用
.wav
版本,只需将源URL的格式从.mp3
更改为.wav
(或者将其保留,默认为wav)注意-wav文件是4倍大,所以这是不利的切换。
pbpqsu0x6#
这不是一个直接的答案,但如果有人使用blob来这里,我设法使用一个名为webm-duration-fix的包修复它
x6h2sr287#
//如果要完整修改视频文件,可以使用“webmFixDuration”包。其他方法仅在显示级别应用于video标签。使用此方法,可以修改整个视频文件
webmFixDuration github示例