如何流式传输 blob

Posted

技术标签:

【中文标题】如何流式传输 blob【英文标题】:How to stream the blob 【发布时间】:2014-06-06 18:58:23 【问题描述】:

我正在开发一个带有麦克风的无线电系统,系统管理员将对麦克风讲话,音频将实时传输给用户......我是使用 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>

【问题讨论】:

但是WebRTC并不容易,我没有弄清楚如何 【参考方案1】:

我不是专家,但我记得很少有关于在 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/

希望这些帮助!

【讨论】:

以上是关于如何流式传输 blob的主要内容,如果未能解决你的问题,请参考以下文章

从 Azure 存储流式传输 blob - 无法访问已关闭的流

从 Azure 存储中流式传输 blob

通过 Azure 媒体服务从 Azure 云存储 Blob 流式传输 mp3(仅限音频)

如何将视频数据流式传输到视频元素?

从 SQLite db 流式传输音频

csharp 通过.net WebAPI将Azure存储专用容器blob下载/流式传输到AngularJS