使用RecordRTC获取基于区间的音频blob的任何方法

时间:2017-10-13 12:23:56

标签: webrtc recordrtc

我正在使用客户端brwoser实现一些视频/音频,并以特定间隔将其中的块上传到服务器。

现在在服务器端,我需要对音频做一些事情,然后将更新后的音频广播到其他客户端。

我正在使用RecordRTC来捕获音频和视频。对于视频我有方法 ondataavailable ,这给了我基于时间的blob。音频也可以有相似之处吗?任何更好的建议来实施这一流程也受到欢迎。

1 个答案:

答案 0 :(得分:0)

使用getUserMedia捕获仅音频流,或生成新媒体流对象,您只需要添加音轨。

var recorder;
var listOfBlobs = [];

navigator.mediaDevices.getUserMedia({
    audio: true,
    video: true // video tracks are enabled only for demo purpose
}).then(function(camera) {
    hiddenVideo.srcObject = camera; // make sure that camera tracks are not released/stoppped/inactive

    var audioOnlyStream = new MediaStream();
    camera.getAudioTracks().forEach(function(audioTrack) {
        audioOnlyStream.addTrack(audioTrack);
    });

    recorder = RecordRTC(audioOnlyStream, {
        type: 'audio',
        mimeType: 'audio/webm',
        recorderType: MediaStreamRecorder,
        timeSlice: 1000,
        ondataavailable: function(blob) {
            listOfBlobs.push(blob);
        }
    });
});

btnStopRecording.onclick = function() {
    recorder.stopRecording(function() {
        var singleBlob = new Blob(listOfBlobs, {
            type: 'audio/webm'
        });

        var url = URL.createObjectURL(singleBlob);
        window.open(url);
    });
};