我正在尝试从网络摄像头录制音频和视频。我偶然发现HTML5 getUserMedia进一步的谷歌搜索让我找到了 WebRTC [哦!顺便说一句,这真的很酷]。
我实现了它,它在 Firefox 上工作得很好,能够完美地录制音频和视频。但是在 chrome 上,根据通过的配置来录制音频或视频。进一步的谷歌搜索让我找到了this post ,这清楚地表明一个线程阻塞了另一个线程。现在我已经看到了 chrome 的演示,它同时演示了音频视频捕获。
这就是我的代码:
// Start recording
captureUserMedia(function(stream) {
localStream = stream;
window.audioVideoRecorder = window.RecordRTC(stream, {
type : 'video/webm'
});
window.audioVideoRecorder.startRecording();
});
// Stop recording
window.audioVideoRecorder.stopRecording(function(url) {
videoElement.src = url;
videoElement.onended = function() {
videoElement.pause();
videoElement.src = URL.createObjectURL(audioVideoRecorder.getBlob());
};
});
以上代码用于在单击按钮时启动并录制媒体。
当控制台登录时,我在录制后返回的 blob 显示为 Firefox 的 video/webm
和 Chrome 的 audio/wav
。
这清楚地表明一个人正在阻止另一个人。是否有任何解决方案可以记录这两个或任何其他我缺少的 javascript 应该添加以使其工作。
更新: 正如@mido22 下面所建议的,这是解决方法。链接可以找到here .
最佳答案
我对此主题做了一些研究,目前还没有办法获得包含音频和视频的单个录制文件。原因是,在firefox中可以做到的是MediaRecorder API .
我没有使用过 RecordRTC,但怀疑他们在内部使用 whammy.js用于 webm
录制和 recorderjs用于wav
录制。
所以chrome最简单的解决方案是:
- 使用
RecordRTC
的第一个实例将视频录制为webm
。 - 使用
RecordRTC
的第二个实例将 audip 录制为wav
。 - 将两者上传到服务器并使用 ffmpeg 合并它们。
- 提供一个链接,使用户可以访问合并的文件。
关于javascript - WebRTC : Chrome not recording video/audio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29690707/