亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

WebRTC錄音功能

標簽:
Html5

HTML部分

标签部分

  • audio标签,实现录制完毕播放音频
  • button按钮,分别实现开始录制、开始播放、开始下载

特别说明

  • controls音频进度条
  • disabled按钮不激活状态
<audio controls id="audioPlay"></audio>
<button id="btnRecord">开始录制</button>
<button disabled id="btnPlay">开始播放</button>
<button disabled id="btnDownload">开始下载</button>

JavaScript部分

获取标签id

  • querySelector可以获取每个标签下的id
var audioPlay = document.querySelector('audio#audioPlay');
var btnRecord = document.querySelector('button#btnRecord');
var btnPlay = document.querySelector('button#btnPlay');
var btnDownload = document.querySelector('button#btnDownload');

异步获取音频流

  • stream参数为获取到的音频流
  • window.stream实现全局流
navigator.mediaDevices.getUserMedia({audio:true})
.then(gotMediaStream);
function gotMediaStream(stream){
    window.stream = stream; 
}

实现录制效果

btnRecord.onclick = () => {
    if(btnRecord.textContent === '开始录制'){
        startRecord();
        btnRecord.textContent = '停止录制';
        btnPlay.disabled = true;
        btnDownload.disabled = true;
    }else{
        stopRecord();
        btnRecord.textContent = '开始录制';
        btnPlay.disabled = false;
        btnDownload.disabled = false;
    }
}

实现开始录制功能

  • var mediaRecorder = new MediaRecorder(stream[,options]);
  • stream为获取到的音频流
  • options是一个可以带布尔类型的字典,可以获取多媒体设备
  • ondataavailable函数用于存储音频流
function startRecord(){
    buffer = [];
    mediaRecorder = new MediaRecorder(window.stream,{audio:true});
    mediaRecorder.ondataavailable = handleDataAvailable;
    mediaRecorder.start(10) //每隔10毫秒存储一块数据
}
var buffer;
function handleDataAvailable(e) {
    buffer.push(e.data);
}

实现停止录制功能

function stopRecord() {
    mediaRecorder.stop();
}

实现开始播放功能

btnPlay.onclick = () => {
    //使用Blob对象
    var blob = new Blob(buffer, { type: 'audio/ogg' });
    //获取资源
    audioPlay.src = window.URL.createObjectURL(blob);
    //控制标签
    audioPlay.controls = true;
    //开始播放
    audioPlay.play();
}

实现开始下载功能

btnDownload.onclick = () => {
    var blob = new Blob(buffer, { type: 'audio/ogg' });
    url = window.URL.createObjectURL(blob);
    var a = document.createElement('a');
    a.href = url;
    a.download = 'juejin.ogg';
    a.click();
}

项目效果

特别推荐

  • 李超老师的《WebRTC实时互动直播技术入门与实战 5G时代必备技能
  • 李老师厉害,拥有10多年的软件开发经历,8年多的音视频直播行业相关经验,有很多值得我们学习的技能,他的课通俗易懂,只要是老师的课程,我都会购买,因为课程一直很好。从ffmpeg到WebRTC,每门课程都是那么用心。学习ffmpeg不懂c语言,老师讲C,学习WebRTC,不懂JS,老师讲JS。听完老师的课,总会茅塞洞开,很难理解的知识点,在老师那里讲的通俗易懂,所以你从来不会担心学不会。
  • 最后,走过路过,千万别错过!
    图片描述
點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
1
獲贊與收藏
3

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消