AudioPlayer.js实现限制仅播放一条语音、多条语音顺序播放、自动播放(有限制)、调整语音条长度

AudioPlayer.js实现限制仅播放一条语音、多条语音顺序播放、自动播放(有限制)、调整语音条长度

使用场景:语音直播,实现点击播放某一条语音,暂停其他播放中的语音。播完一条语音,自动播放下一条。当接收到新语音,且没有播放中的音频,自动播放这条语音

这里只贴出代码片段,源码和更改后的源码可在这下载

仅播放一条语音

思路:当点击音频播放按钮时,控制其他音频暂停

1.将所有语音循环调用插件

$('#audio_'+audio_id).audioPlayer();

2.AudioPlayer.js中已经有点击事件,在此基础上添加逻辑即可

image-20211119115245059

更改后:

image-20211119120520852

解释:

当初始化后,audio元素变成下图所示了。可以通过改变class值来达到更改audio显示状态的目的

image-20211119132150170


多条语音顺序播放

思路:给audio标签添加监听事件,当语音播完后,控制下一条语音播放

//连续播放音频
function continuousPlayAudio()
{
    let audios = $('audio');
    for (let i = 0; i < audios.length; i++) {
        let maxLength = i + 1;
        let nextAudio = audios[maxLength];
        audios[i].addEventListener('ended', function(event) {
            if (audios.length === maxLength) return false;
            $(nextAudio).parents(".audioplayer").removeClass("audioplayer-stopped");
            $(nextAudio).parents(".audioplayer").addClass("audioplayer-playing");
            nextAudio.play();
        }, false);
    }
}

自动播放

当新插入语音,并且当前没有播放中的音频,则播放新语音

function autoPlayAudio(audio_id, type) {
	$('#audio_'+ audio_id).audioPlayer();//初始化音频
	if (type === 'new_audio' && !isHasPlayingAudio() ) {//新插入音频并且没有播放中的音频
     	$('#audio_'+ audio_id).parents(".audioplayer").removeClass("audioplayer-stopped")
        $('#audio_'+ audio_id).parents(".audioplayer").addClass("audioplayer-playing")
        $('#audio_'+ audio_id).next().attr('title', 'Pause').find('a').html('Pause');
        $('#audio_'+ audio_id).play();
        //如果监听到音频由于一些原因没有播放(ios无法自动播放),则恢复图标样式.
        if (audios[newestAudio].paused) {
            $('#audio_'+ audio_id).parents(".audioplayer").addClass("audioplayer-stopped")
            $('#audio_'+ audio_id).parents(".audioplayer").removeClass("audioplayer-playing")
            $('#audio_'+ audio_id).next().attr( 'title', 'Play').find( 'a' ).html( 'Play' );
        }
    }
}

调整音频长度

思路:AudioPlayer有个loadeddata的事件监听,可以在这增加逻辑判断,更改长度属性

image-20211119140939446

image-20211119141017379


AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现钉钉语音播放器,我们可以使用 HTML5 中的 `<audio>` 标签来实现。下面是一个简单的示例代码: HTML 代码: ```html <audio id="audio-player" controls> <source src="http://example.com/audio.mp3" type="audio/mpeg"> </audio> <button id="play-btn">播放</button> <button id="pause-btn">暂停</button> <input id="progress-bar" type="range" min="0" max="100" value="0"> ``` JS 代码: ```javascript const audioPlayer = document.getElementById("audio-player"); const playBtn = document.getElementById("play-btn"); const pauseBtn = document.getElementById("pause-btn"); const progressBar = document.getElementById("progress-bar"); playBtn.addEventListener("click", () => { audioPlayer.play(); }); pauseBtn.addEventListener("click", () => { audioPlayer.pause(); }); audioPlayer.addEventListener("timeupdate", () => { const progress = (audioPlayer.currentTime / audioPlayer.duration) * 100; progressBar.value = progress; }); progressBar.addEventListener("input", () => { const time = (progressBar.value / 100) * audioPlayer.duration; audioPlayer.currentTime = time; }); ``` 代码解释: 1. 首先定义了 `audioPlayer`、`playBtn`、`pauseBtn` 和 `progressBar` 四个变量,分别对应 HTML 中的 `<audio>` 标签、播放按钮、暂停按钮和进度。 2. 然后给播放按钮和暂停按钮分别添加了 click 事件监听器,当用户点击时,调用 `audioPlayer.play()` 或 `audioPlayer.pause()` 方法来播放或暂停音频。 3. 接着,给 `<audio>` 标签添加了 `timeupdate` 事件监听器,当音频播放进度更新时,计算当前播放进度占总时长的百分比,并将其赋值给进度的 value 属性,以更新进度的显示。 4. 最后,给进度添加了 input 事件监听器,当用户拖动进度时,计算拖动后的播放时间,并将其赋值给 `audioPlayer.currentTime` 属性,以实现拖动进度后的播放位置更新。 需要注意的是,这只是一个简单的示例代码,实际开发中可能需要更多的细节处理,比如更新播放按钮和暂停按钮的状态、处理音频加载错误等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值