录音以不一致的速度播放

时间:2018-01-12 12:12:34

标签: javascript audio blob getusermedia

我使用下面的代码在浏览器中录制音频,然后使用socket.io将生成的blob发送到node.js服务器。然后将数据保存到mysql数据库或.ogg文件。

来自其中任何一个的播放有时会出现奇怪的混乱 - 在不同时刻声音会突然加速然后恢复正常。我无法在网上找到有关此问题的任何内容。

更新:进一步的测试让我相信它是硬件/软件/兼容我正在使用的华硕D1声卡。记录其他设备不会导致相同的行为。

 var mediaRecorder;
    var startRecord = function(recordData){
    if (!navigator.getUserMedia)
        navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
        navigator.mozGetUserMedia || navigator.msGetUserMedia;
    if (navigator.getUserMedia) {
        navigator.getUserMedia({audio:true}, success, function(stream) {
            alert('Error capturing audio.');
        });
    } else alert('getUserMedia not supported in this browser.');
    function success(stream) {
        var chunks = [];
        mediaRecorder = new MediaRecorder(stream);
        mediaRecorder.start();
        mediaRecorder.onstop = function(e) {
            stream.getAudioTracks()[0].stop()
            var blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs=opus' })
            var audioURL = URL.createObjectURL(blob);
            if (recordData.id) {
                socket.emit('audio', {
                    'id':recordData.id,
                    'audio':blob,
                    'option':recordData.type
                });
        }
        mediaRecorder.ondataavailable = function(e) {
            chunks.push(e.data);
        }
    }
};
var stopRecord = function(recordData){
    mediaRecorder.stop();
    mediaRecorder.state = 'recording'
};

0 个答案:

没有答案