javascript - WebRTC : Chrome not recording video/audio

标签 javascript html audio video webrtc

我正在尝试从网络摄像头录制音频和视频。我偶然发现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最简单的解决方案是:

  1. 使用 RecordRTC 的第一个实例将视频录制为 webm
  2. 使用 RecordRTC 的第二个实例将 audip 录制为 wav
  3. 将两者上传到服务器并使用 ffmpeg 合并它们。
  4. 提供一个链接,使用户可以访问合并的文件。

关于javascript - WebRTC : Chrome not recording video/audio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29690707/

相关文章:

javascript - Typescript 类型对 Promise 类型强制执行

javascript - 如何在 Javascript 中获取字符串突出显示部分的起始和结束索引?

javascript - jquery gettime总是使时间早于4小时

html - 如何在 Safari 中打开 iPhone 网络应用程序链接?

ios - 在 iPhone App 中使用什么音频压缩算法?

javascript - MathJax 和服务器

php - 如何将 css 应用于 php 'echo $tube->error;'?

javascript - 单击按钮时更改表单(多步表单)- 没有 Bootstrap

delphi - Winmm.dll无法播放某些WAV声音吗?

iphone - AVAudioPlayer泄漏和警告,最后我的应用程序崩溃了