首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Recorder.js录制未按预期工作

Recorder.js录制未按预期工作
EN

Stack Overflow用户
提问于 2017-07-25 01:48:39
回答 1查看 1.5K关注 0票数 1

我使用recorder.js在JavaScript中实现了一个记录器

基本上,我正在为Mozilla OS创建一个应用程序。当我安装应用程序时,录像机第一次工作正常。当我第二次尝试的时候,它不起作用。当我在Audacity中打开wav文件时,它显示为完全空白。

我在分享我的录音机。我保留createDownloadLink()为空,因为它是我不能分享的东西。

为什么录像机第一次工作正常,第二次不工作,有什么线索吗?有什么办法可以解决这个问题吗?

代码语言:javascript
运行
复制
function startUserMedia(stream) {

            var input = audio_context.createMediaStreamSource(stream);
            __log('Media stream created.');
            // Uncomment if you want the audio to feedback directly
            //input.connect(audio_context.destination);
            //__log('Input connected to audio context destination.');
            recorder = new Recorder(input);
            __log('Recorder initialised.');
        }

function startRecording(button) {

            recorder && recorder.clear();
            recorder && recorder.record();
            button.disabled = true;
            button.nextElementSibling.disabled = false;
            __log('Recording...');
        }

function stopRecording(button) {

            recorder && recorder.stop();
            button.disabled = true;
            button.previousElementSibling.disabled = false;
            __log('Stopped recording.');
            // create WAV download link using audio data blob
            createDownloadLink();
            recorder.clear();
            recorder && recorder.clear();

        }

function createDownloadLink() {

            recorder && recorder.exportWAV(function(blob) {
    }
}

 window.onload = function init() {

            try {

                request = new XMLHttpRequest();
                request.mozSystem = true;

                // webkit shim
                window.AudioContext = window.AudioContext || window.webkitAudioContext;
                navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia|| navigator.mozGetUserMedia;
                window.URL = window.URL || window.webkitURL;
                audio_context = new AudioContext;
                __log('Audio context set up.');
                __log('navigator.getUserMedia ' + (navigator.getUserMedia ? 'available.' : 'not present!'));
            } catch (e) {
                alert('No web audio support in this browser!');
            }
            navigator.getUserMedia({
                audio: true
            }, startUserMedia, function(e) {
                __log('No live audio input: ' + e);
            });
        };
EN

回答 1

Stack Overflow用户

发布于 2017-08-15 12:40:51

您可能会遇到这个错误:https://bugzilla.mozilla.org/show_bug.cgi?id=934512解决方法是在某个永远不会被垃圾收集的地方放置一个对createMediaStreamSource结果的引用,例如:

window.savedReferenceWorkaroundFor934512 = input;

如果这不是原因,那么我会考虑为每个启动/停止周期创建一个新的audioContext (并在每个新的启动时启动一个新的getUserMedia调用)。

如果不查看所有代码就很难判断,但是在保存blob和清除记录器之间也可能存在竞争条件。一种解决方法是仅在创建blob之后调用recorder.clear()。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45286923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档