我正在尝试记录添加到 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/