html5-audio 播放列表和自动播放

本文介绍了一个使用HTML和JavaScript实现的简易音频播放器代码示例。该播放器能够从一个包含多个MP3文件的列表中播放音频,支持自动播放下一首及手动选择歌曲功能。代码展示了如何创建和控制Audio元素,以及如何通过事件监听器实现播放结束后的自动切换。

一个简单audio的列表和播放小例子

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
<script type="text/javascript">
var count = 43; //一共多少MP3文件
var index = '18.mp3'; // 初始化播放那个文件
window.onload = function(){
    var audio = new Audio();
    audio.preload = true;
    audio.controls = true;
    audio.loop = false;
    audio.src = index;
    document.body.appendChild(audio);
    audio.play();
    audio.addEventListener('ended', playEndedHandler, false);

    function playEndedHandler(){
        var name = parseInt(index);
        name = name+1 < 10 ? '0'+(name+1)+'.mp3' : (name+1)+'.mp3';
        console.log(name)
        name>count && audio.removeEventListener('ended',playEndedHandler,false);
        
        audio.src = name;
        audio.play();
    }



    var div = document.createElement('div');
    var ul = document.createElement('ul');
    for (var i = 1; i <=count; i++) {
        var name = i<10 ? '0'+i+'.mp3' : i+'.mp3'
        var li = document.createElement('li');
        var text = document.createTextNode(name);
        li.appendChild(text);
        ul.appendChild(li);
        li.addEventListener('click',function(event){
            audio.src=event.target.innerHTML;
            audio.play();
        },false)
    }
    div.appendChild(ul);
    document.body.appendChild(div);
}
</script>
</body>
</html>

 

<think> 我们根据用户的问题,用户想了解如何使用vue2-audio进行音频播放。但根据提供的引用,并没有直接提到vue2-audio,而是提到了js-audio-recorder、vue-AudioComponentaudio标签。因此,我们需要结合Vue2的通用音频播放方法进行回答。 由于用户明确提到了vue2-audio,我们可以推断这可能是一个第三方库或组件。但是,在提供的引用中并没有直接涉及。因此,我们可以考虑以下两种可能性: 1. 用户可能指的是一个名为vue2-audio的特定组件,但引用中未提供相关信息。 2. 用户可能泛指在Vue2项目中实现音频播放。 鉴于引用中提到了: - 引用[1]:使用js-audio-recorder实现录制、播放、下载音频(主要面向PCM数据)。 - 引用[2]:一个名为vue-AudioComponent的音频播放组件。 - 引用[3]:在vue3中使用audio标签播放音频。 由于用户使用的是Vue2,我们可以参考引用[3]中提到的audio标签,因为这是HTML5标准,同样适用于Vue2。同时,引用[2]中的vue-AudioComponent可能是一个第三方组件,但不确定是否支持Vue2(因为引用中未明确版本)。 因此,我们可以提供两种方法: 方法一:使用HTML5audio标签(原生方法,简单易用) 方法二:使用第三方组件(例如vue-audio,注意不是vue2-audio,但我们可以推荐一个在Vue2中常用的音频播放组件) 由于用户问题中提到了“vue2-audio”,我们可以假设用户可能想使用一个现成的Vue2组件。如果我们知道有这样一个组件,可以介绍;如果没有,我们可以推荐类似的组件,比如“vue-audio”或“vue-aplayer”等。 但是,根据引用[2]中提到了“vue-AudioComponent”,我们可以尝试寻找是否有支持Vue2的版本。不过,由于引用信息有限,我们主要介绍通用方法。 步骤: 1. 使用原生audio标签(适用于简单播放) 2. 使用第三方组件(提供更丰富的功能) 由于用户没有提供更多细节,我们可以给出两种实现方式。 另外,注意引用[1]中提到了js-audio-recorder,这是一个用于录制的库,同时也支持播放,但用户需求是播放,所以也可以考虑使用它进行播放,但可能过于复杂(因为主要用于录制)。 因此,我们主要介绍两种方法:原生第三方组件(以vue-aplayer为例,因为它支持Vue2)。 具体回答: </think> 根据您的需求,以下是使用 Vue2 实现音频播放的三种主流方法,结合引用内容实际开发经验整理: ### 方法一:使用原生 audio 标签(推荐基础场景) ```vue <template> <div> <audio ref="audioPlayer" :src="audioUrl" controls></audio> <button @click="play">播放</button> <button @click="pause">暂停</button> </div> </template> <script> export default { data() { return { audioUrl: 'https://example.com/audio.mp3' // 替换为实际音频地址 } }, methods: { play() { this.$refs.audioPlayer.play() // 调用原生播放接口 }, pause() { this.$refs.audioPlayer.pause() } } } </script> ``` **特点**: - 原生 HTML5 实现,兼容性好[^3] - 无需额外依赖 - 通过 `ref` 直接操作 DOM 元素 ### 方法二:使用 vue-audio 组件(推荐功能扩展) 1. 安装组件: ```bash npm install vue-audio --save # 或 yarn add vue-audio ``` 2. 基础实现: ```vue <template> <vue-audio :url="audioUrl" :autoPlay="false"/> </template> <script> import VueAudio from 'vue-audio' export default { components: { VueAudio }, data() { return { audioUrl: 'https://example.com/audio.mp3' } } } </script> ``` **特性**: - 内置播放控制 UI(进度条/音量/倍速)[^2] - 支持事件监听(`@play`/`@pause`) - 自动处理跨浏览器兼容 ### 方法三:使用 js-audio-recorder(适合录音+播放场景) ```vue <template> <div> <button @click="startRecording">录音</button> <button @click="playRecording">播放</button> </div> </template> <script> import JsAudioRecorder from 'js-audio-recorder' export default { data() { return { recorder: new JsAudioRecorder(), audioBlob: null } }, methods: { startRecording() { this.recorder.start() // 开始录音[^1] }, async playRecording() { this.audioBlob = await this.recorder.getBlob() const audio = new Audio(URL.createObjectURL(this.audioBlob)) audio.play() } } } </script> ``` **适用场景**: - 需要录制+播放一体化功能 - 处理 PCM 原始音频数据[^1] - 实现音频可视化 ### 对比建议 | 方案 | 安装依赖 | 适用场景 | 复杂度 | |--------------|----------|---------------------------|--------| | 原生 audio | 无需 | 简单播放需求 | ★☆☆☆☆ | | vue-audio | 需要 | 需要完整播放器 UI | ★★★☆☆ | | js-audio-recorder | 需要 | 录音+播放综合需求 | ★★★★☆ | > **操作提示**:音频文件较大时建议使用 Web Audio API 分段加载,避免页面卡顿。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值