我正在使用开源JavaScript库MediaStreamRecorder在Mozilla Firefox和Google Chrome中录制音频和视频webRTC调用。
电话录音成功,但我面临以下问题。
如果我在multiStreamRecorder.ondataavailable
中使用1秒(1000毫秒)的时间间隔,则multiStreamRecorder.ondataavailable
事件不会触发。这就是为什么没有错误或没有登录控制台的原因。
但是,如果我使用1.5秒(1500毫秒)或更长的时间间隔,它会触发var ws;
function start() {
ws = new WebSocket("wss://xyz/");
ws.onopen = function () {
console.log("WebSocket has been opened!");
};
ws.onmessage = function (message) {
console.log("A messsage is received from WebSocket Server.", message);
};
ws.onclose = function (e) {
console.log('WebSocket is closed. Reconnection will be attempted in 5 second.', e.reason);
setTimeout(function () {
start();
}, 5000);
};
ws.onerror = function (err) {
console.error('WebSocket encountered an error: ', err.message, 'Closing WebSocket');
ws.close();
};
}
start();
function startRecording(localStream, remoteStream) {
if (localStream != null && remoteStream != null) {
multiStreamRecorder = new MultiStreamRecorder([localStream, remoteStream], "video/webm");
multiStreamRecorder.mimeType = "video/webm";
multiStreamRecorder.ondataavailable = function (blob) {
console.log("sending blob to websocket server", blob);
ws.send(blob);
};
// It doesn't work with the 1000ms time interval
multiStreamRecorder.start(1500);
}
else{
console.error("One or more streams are null.");
}
}
事件,一切正常。
(仅限视频情况)
我想将间隔保持为1秒(1000毫秒)。
private float timeSeconds = 0f;
private float period = 1f;
public void render() {
//Execute handleEvent each 1 second
timeSeconds +=Gdx.graphics.getRawDeltaTime();
if(timeSeconds > period){
timeSeconds-=period;
handleEvent();
}
[...]
}
public void handleEvent() {
[...]
}
答案 0 :(得分:1)
我怀疑一秒钟没有足够的时间让相机流预热。虽然您可以立即将录音机连接到流,但它似乎没有准备好在零时间播放/录制。
视频元素chart1.DataBind();
让您等待数据准备就绪;录音机没有。
你可以制作一个(对Chrome使用https fiddle):
//Inside main form
chart1.Series["one"].Points.DataBindY(myclass1.values);
chart1.Series["two"].Points.DataBindY(myclass2.values);
//...

.onloadedmetadata

(Chrome和Firefox都直接实施MediaRecorder,所以我已经回答了问题。)
答案 1 :(得分:0)
我有类似的问题。除非我开始录制并停止几次,否则它不会触发ondataavailable
事件。 2天后发现问题出在我的麦克风驱动程序:)。它可能一直在尝试使用麦克风,因此要花几秒钟才能发现它不起作用。将audio
设置为false
后,所有功能都将完美运行。只是没有声音大声笑。