webrtc - startRecording 无法使用带有 RTCMultiConnection 的 RecordRTC

标签 webrtc recordrtc rtcmulticonnection

我正在尝试记录添加到 RTCMultiConnection 的每个新 session /用户。
我在应用程序中使用以下演示网址 https://rtcmulticonnection.herokuapp.com/demos/Audio+Video+TextChat+FileSharing.html

现在我已将以下 cdn 引用添加到代码中。 https://cdn.webrtc-experiment.com/RecordRTC.js

这是我正在使用的代码,但 connection.streams[event.streamid].startRecording(); 不起作用。

//.................RTCMultiConnection 代码........................ //................................................ ...... var 连接 = new RTCMultiConnection(); var btnStopRec = document.getElementById("btnStopRecording"); 连接.socketURL = 'https://rtcmulticonnection.herokuapp.com:443/'; 连接.enableFileSharing = true; 连接. session = { 音频:真实, 视频:真实, 数据:真实, }; 连接.sdpConstraints.mandatory = { 提供接收音频:true, 提供接收视频:true, }; 连接.onstream = 函数(事件) { document.body.appendChild(event.mediaElement); console.log("流媒体录制开始") 连接.streams[event.streamid].startRecording(); console.log("流媒体录制开始") }

最佳答案

我在下面的一个片段中包含了所有可能的情况。请仅获取您需要的代码:

// global object that contains multiple recorders
var recorders = {};

// auto start recorder as soon as stream starts/begins
connection.onstream = function(event) {
    document.body.appendChild(event.mediaElement);

    recorders[event.streamid] = RecordRTC(event.stream, {
        type: 'video'
    });

    recorders[event.streamid].startRecording();
};

// auto stop recorder as soon as stream stops/ends
connection.onstreamended = function(event) {
    if (recorders[event.streamid]) {
        recorders[event.streamid].stopRecording(function() {
            var blob = recorders[event.streamid].getBlob();
            var url = URL.createObjectURL(blob);
            window.open(url);

            delete recorders[streamid]; // clear
        });
    }

    if (event.mediaElement.parentNode) {
        event.mediaElement.parentNode.removeChild(event.mediaElement);
    }
};

// stop single recorder
document.getElementById('manually-stop-single-recording').onclick = function() {
    var streamid = prompt('Enter streamid');
    recorders[streamid].stopRecording(function() {
        var blob = recorders[streamid].getBlob();
        var url = URL.createObjectURL(blob);
        window.open(url);

        delete recorders[streamid]; // clear
    });
};

// stop all recorders
document.getElementById('manually-stop-all-recordings').onclick = function() {
    Object.keys(recorders).forEach(function(streamid) {
        recorders[streamid].stopRecording(function() {
            var blob = recorders[streamid].getBlob();
            var url = URL.createObjectURL(blob);
            window.open(url);

            delete recorders[streamid]; // clear
        });
    });
};

// record outside onstream event
// i.e. start recording anytime manually
document.getElementById('record-stream-outside-the-onstream-event').onclick = function() {
    var streamid = prompt('Enter streamid');
    var stream = connection.streamEvents[streamid].stream;

    recorders[streamid] = RecordRTC(stream, {
        type: 'video'
    });

    recorders[streamid].startRecording();
};

关于webrtc - startRecording 无法使用带有 RTCMultiConnection 的 RecordRTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45845167/

相关文章:

node.js - 将捕获的视频保存到Electron中的文件

audio - 如何使用RTCMultiConnection在网状拓扑中实现WebRTC对等音频 session

c++ - webRTC : How to apply webRTC's VAD on audio through samples obtained from WAV file

android - 如何使用与 KMS 的安全 SSL 连接在 Android 上使用您自己的 "Tomcat signalling server"实现 Kurento Client JS?

javascript - WebRTC投屏+录音方案?

javascript - 在 webRTC 中切换摄像头

javascript - 在 QuickBlox 中传递扩展数据和 session 请求时出现问题

javascript - navigator.mediaDevices.getUserMedia 在 navigator.getUserMedia() 工作时不工作

javascript - Laravel 中的 RecordRTC