首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >记录RecordRTC文件大小

记录RecordRTC文件大小
EN

Stack Overflow用户
提问于 2018-04-01 14:20:50
回答 1查看 2.7K关注 0票数 0

有什么方法可以在录音中得到文件大小吗?所以,当它达到允许的最大尺寸时,我就可以停止录音了?

目前只有停止录制的方法,方法是使用“停止”按钮停止录制,并使用“setRecordingDuration()”设置持续时间:

代码语言:javascript
复制
function successCallback(stream) {
    // RecordRTC usage goes here
    var options = {
        mimeType: 'audio/mp3', // or video/webm\;codecs=h264 or video/webm\;codecs=vp9
        //                audioBitsPerSecond: 128000,
        //                bufferSize: parseInt($(".media-bitrates").val()),
        sampleRate: parseInt($(".media-framerates").val()),
        //                videoBitsPerSecond: parseInt($(".media-bitrates").val()),
        bitsPerSecond: parseInt($(".media-bitrates").val()),
        // bitsPerSecond: 128000 // if this line is provided, skip above two
    };
    varStream = stream;
    recordRTC = RecordRTC(varStream, options);
    audio.srcObject = varStream;
    varStream.stop = function () {
        this.getAudioTracks().forEach(function (track) {
            track.stop();
        });
    };
}

根据我从编码中看到的,我只能在停止录制时获得大小,因为在录制过程中blob是不可用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-02 10:15:34

我找到了自己的答案。无论如何,穆阿兹·汗在他的“关于问题的书”中回答了这个问题。好吧,这不是问题,所以我不去看。不管怎么说,如果有人在找答案的话,这可能会有帮助。

代码语言:javascript
复制
(function looper() {
if (!recorder) {
    return;
}
var internal = recorder.getInternalRecorder();
if (internal && internal.getArrayOfBlobs) {
    var blob = new Blob(internal.getArrayOfBlobs(), {
        type: 'video/webm'
    });

    // -------------------------------------------------------------
    if (blob.size > 100 * 1000) { // if blob is greater than 100 MB
        recorder.stopRecording(callback); // stop recording here
        return;
    }
    // -------------------------------------------------------------

    document.querySelector('h1').innerHTML = 'Recording length: ' + bytesToSize(blob.size);
}
setTimeout(looper, 1000);
})();

您可以在下面的链接中找到答案:

https://github.com/muaz-khan/RecordRTC/issues/301

这个网站也可能会被关闭..。;)

不管怎么说,希望不是。让我提供完整的代码代替。解释不是我最好的部分。工作中的例子是最好的解释。

在录制之前,MediaStreamRecorder应该是记录器类型。应该通过TimeSlice params。不太确定这是怎么回事。但是我想,这个参数给了Library一个信息,这个blob应该每1000毫秒切片一次。那么每一秒。

代码语言:javascript
复制
    recorder = RecordRTC(camera, {
        recorderType: MediaStreamRecorder,
        mimeType: 'video/webm',
        timeSlice: 1000 // pass this parameter
    });

然后把这段代码放在后面。这个循环函数每1000毫秒运行一次。检查当前的水珠大小。您可以检查大小,显示用户或停止录制达到允许的大小。您应该检查服务器上的文件大小。您不能依赖客户端脚本。

代码语言:javascript
复制
        (function looper() {
        if(!recorder) {
            return;
        }
        var internal = recorder.getInternalRecorder();
        if(internal && internal.getArrayOfBlobs) {
            var blob = new Blob(internal.getArrayOfBlobs(), {
                type: 'video/webm'
            });
            document.querySelector('h1').innerHTML = 'Recording length: ' + bytesToSize(blob.size);
        }
        setTimeout(looper, 1000);
    })();

最后一部分。

代码语言:javascript
复制
recorder.startRecording();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49598996

复制
相关文章

相似问题

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