如何流式传输blob

时间:2014-06-06 18:58:23

标签: javascript html5 node.js

我正在开发一个带麦克风的无线电系统,系统管理员将对着麦克风说话,音频将实时传输给用户......我是使用node.js的新手,我不确定如何使音频流从麦克风流向用户...任何人都可以帮助我吗?

我有以下问题,我将麦克风中的音频记录在blob中,我需要知道如何直播这个blob ......

我没有代码只显示音频录制...

    <script>
        function getByID(id) {
            return document.getElementById(id);
        }

        var recordAudio = getByID('record-audio'),
            stopRecordingAudio = getByID('stop-recording-audio');

        var audio = getByID('audio');


        var audioConstraints = {
            audio: true,
            video: false
        };

    </script>
    <script>
        var audioStream;
        var recorder;

        recordAudio.onclick = function() {
            if (!audioStream)
                navigator.getUserMedia(audioConstraints, function(stream) {
                    if (window.IsChrome) stream = new window.MediaStream(stream.getAudioTracks());
                    audioStream = stream;

                    audio.src = URL.createObjectURL(audioStream);
                    audio.muted = true;
                    audio.play();

                    // "audio" is a default type
                    recorder = window.RecordRTC(stream, {
                        type: 'audio'
                    });
                    recorder.startRecording();
                }, function() {
                });
            else {
                audio.src = URL.createObjectURL(audioStream);
                audio.muted = true;
                audio.play();
                if (recorder) recorder.startRecording();
            }

            window.isAudio = true;

            this.disabled = true;
            stopRecordingAudio.disabled = false;
        };


        stopRecordingAudio.onclick = function() {
            this.disabled = true;
            recordAudio.disabled = false;
            audio.src = '';

            if (recorder)
                recorder.stopRecording(function(url) {
                    audio.src = url;
                    audio.muted = false;
                    audio.play();

                    document.getElementById('audio-url-preview').innerHTML = '<a href="' + url + '" target="_blank">Recorded Audio URL</a>';

                });
        };

    </script>

1 个答案:

答案 0 :(得分:2)

我不是专家,但我记得很少有关于在html5rocks上捕获音频的文章。

http://updates.html5rocks.com/2012/01/Web-Audio-FAQ http://www.html5rocks.com/en/tutorials/getusermedia/intro/#toc-webaudio-api

您应该尝试在npm库中搜索。我认为它可能有一些流节点模块。 (从核心node.js API开始开发真的很难,我也想不出来。)

另请看一下:
Node.js synchronized audio streaming between server and clients?

这里是用于发送二进制数据的节点模块(我认为它支持流式传输blob):http://binaryjs.com/

希望这些有帮助!