gpt4 book ai didi

javascript - 无法触发 HTML5 音频的 "durationchange"

转载 作者:行者123 更新时间:2023-11-29 22:07:16 27 4
gpt4 key购买 nike

感谢您查看我的问题。我正在从事 HTML5 音频相关项目。现在我遇到一个问题。

我想做的是将一个 audio.src 分配给另一个 audio.src。实际上,它在我的开始演示中运行良好。但它在我当前的项目中不起作用。无法播放原始音频。我调解了它所有的加载过程并找出了 durationchange 中发生的问题.但我不知道它有什么问题,因为我的逻辑与我开始的演示非常相似。

希望这里有人可以帮助我找出我的代码有什么问题。以下是我的代码:

// the original audio is Glogal.audio
var segs = $('.cutter-room .container').find('.seg-container');
var audio_self = "<audio id='player_0'>";

// add one more segment for the new cut part
$('.cutter-room').append(audio_self);
$('.cutter-room .container').append(cut.audio_seg); // audio_seg is the 'clothes' of audio tag, a GUI

// new_seg is the audio tag which I want to assign to
var new_seg = document.getElementById("player_0");
var temp = GLOBAL.audio.src;
new_seg.src = GLOBAL.audio.src; // if I comment this one, the original will be fine

下面是我的测试代码,当新的<audio>成功插入 DOM,如果我尝试播放原始音频,它是 durationchange不会被调用:

/*for testing*/
GLOBAL.audio.addEventListener("loadstart", function(){
console.log('start loading');
});
GLOBAL.audio.addEventListener("durationchange", function(){
console.log("change duration");
});
/*end testing*/

顺便说一句,我确定音乐文件是正确的。再次感谢!

更新2013/11/28

这是 jsFilddle关联。很抱歉,我不知道我应该把哪个音乐链接放在 src 中所以我只是把我的本地路径。 jsFilddle中显示的问题和我上面说的有点不一样。在jsFiddle中,原音频没有问题,但第二个无法播放。

我发现我只是打开.html 页面,不支持服务器。不会有错的。但是如果我在本地服务器上运行它,duraionchange不会回应。那是不是说问题出在服务器端,而不是js呢?

但是一个音频源不能分配给另一个正在运行的服务器的音频源是不合理的。它们是路径,但本质上它们仍然是字符串,不是吗?

最佳答案

问题是浏览器不喜欢让几个不同的播放器指向同一页面上的同一个 mp3。

所以技巧可以是改变 url,以防止缓存,例如:

assign.src = original.src+"?foo="+(new Date().getTime());

jsfiddle

关于javascript - 无法触发 HTML5 音频的 "durationchange",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com