关于audio标签播放跨域的问题

音频播放遇到跨域问题,audio标签是否能跨域取决于源服务器的响应头设置。通过Apache或IIS配置允许跨域请求,如Apache中需在VirtualHost或Directory节点下设置Header,以实现跨域播放。
摘要由CSDN通过智能技术生成

遇到过的错误:

DOMException: The play() request was interrupted by a new load request.
DOMException: Failed to load because no supported source was found.

 

到底这个标签的src可以跨域吗?

先看一个例子: (浏览器也有差异,IE浏览器都可以播放)

<audio id="musicplayer" preload="auto" >
    <source src="m.mp3" type&
HTML5的Audio标签可以用于播放音频文件,并且可以结合JavaScript来实现歌词同步的效果。具体实现步骤如下: 1. 在HTML页面中添加Audio标签,设置src属性为音频文件的URL。 ```html <audio id="audio" src="music.mp3"></audio> ``` 2. 在HTML页面中添加一个用于显示歌词的元素,比如一个div标签。 ```html <div id="lyrics"></div> ``` 3. 编写JavaScript代码来解析歌词文件,并将歌词显示在页面上。假设歌词文件的格式为每行一句歌词,每句歌词的时间戳格式为[mm:ss.xx],其中mm表示分钟,ss表示秒,xx表示毫秒。代码如下: ```javascript var lyrics = document.getElementById("lyrics"); var audio = document.getElementById("audio"); // 解析歌词文件,得到一个数组,每个元素包含歌词和时间戳 var lrc = parseLrc(lrcFile); // 当音频播放时,更新歌词 audio.addEventListener("timeupdate", function() { var currentTime = audio.currentTime; for (var i = 0; i < lrc.length; i++) { if (currentTime > lrc[i].time && (!lrc[i+1] || currentTime < lrc[i+1].time)) { // 显示当前歌词 lyrics.innerHTML = lrc[i].lyric; } } }); // 解析歌词文件 function parseLrc(lrcFile) { var lines = lrcFile.split("\n"); var lrc = []; for (var i = 0; i < lines.length; i++) { var match = /\[(\d{2}):(\d{2})\.(\d{2})\](.*)/.exec(lines[i]); if (match) { var time = parseInt(match[1]) * 60 + parseInt(match[2]) + parseInt(match[3]) / 100; var lyric = match[4].trim(); lrc.push({time: time, lyric: lyric}); } } return lrc; } ``` 解析歌词文件的函数parseLrc返回一个包含歌词和时间戳的数组。在音频播放时,通过监听timeupdate事件,获取当前播放时间,然后遍历歌词数组,找到当前时间对应的歌词并显示在页面上。 注意:由于浏览器的安全限制,如果音频文件和歌词文件不在同一个域名下,需要设置跨域访问的响应头。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值