7

我正在使用 Opentok JavaScript WebRTC 库来托管一对一的视频聊天(点对点)。我可以完美地看到同行的视频并听到音频。

我的愿望是录制其他聊天方(远程)的音频/视频。为此,我使用RecordRTC。我能够录制其他聊天参与者的视频(视频被输出到 HTML 视频元素),但是,到目前为止,我还没有成功录制音频(我可以得到一个死寂的 .wav 文件)。使用 Chrome 金丝雀 (30.0.1554.0)。这是我的方法:

var clientVideo = $('#peerdiv video')[0];//peer's video (html element)
var serverVideo = $('#myselfdiv video')[0];//my video (html element)

var context = new webkitAudioContext();
var clientStream = context.createMediaStreamSource(clientVideo.webRTCStream);
var serverStream = context.createMediaStreamSource(serverVideo.webRTCStream);

webRTCStream 是我通过修改 opentok js 库的源分配给 HTMLVideoElement 对象的自定义属性。它包含链接到相应 <video> 元素的 MediaStream 对象。

var recorder = RecordRTC({
                    video: clientVideo,
                    stream: clientStream
                });
recorder.recordAudio();
recorder.recordVideo();

视频被录制。音频文件也被创建,它的长度接近视频的长度,但是,它是完全无声的(是的,在录制过程中另一边有很多噪音)

我已经使用显示我的网络摄像头的视频流(和音频)的视频元素对此进行了测试,并且它有效:音频和视频都被记录了:

...
var recorder = RecordRTC({
                    video: serverVideo,
                    stream: serverStream
                });
...

来自远程位置的流有什么特别之处吗?关于这个问题的任何指导都会非常有帮助。

4

3 回答 3

7

在以下情况下会出现同样的问题...

  1. 如果不是立体声音频(双声道音频)......即它是单声道音频
  2. 如果音频输入通道不等于音频输出通道
  3. 如果音频输入设备不是 chrome 上选择的默认设备

我仍在努力寻找真正的问题。

我为了测试目的添加了这个实验......见控制台......

https://webrtc-experiment.appspot.com/demos/remote-stream-recording.html

更新时间: 2014 年 2 月 1 日星期六 09:22:04 PKT

不支持远程录音;这个问题被认为是低优先级的wontfix:

  1. 支持将远程 WebRTC MediaStreamTrack 输出馈送到 WebAudio
  2. 将 WebRTC MediaStreamTrack 输出连接到 Web 音频 API

更新于 2016 年 3 月 28 日

Chrome 版本 49+开始,RecordRTC现在支持远程音频+视频录制。

另一方面,Firefox 只能录制远程音频。

于 2013-07-04T17:11:04.540 回答
2

如果 Chrome/WebRTC/Opus 默认输出单声道音频,如果这是这里的问题,我会在这种情况下看到两个选项:

  1. 通过使作品输出立体声 - 不知道如何。
  2. 通过使 RecordRTC/Recorderjs 代码与单声道一起工作

或者有谁知道任何其他有效的录音库?

于 2013-07-04T21:33:03.750 回答
0

这实际上现在在 Firefox 中运行良好。我正在使用FireFox 29.0.1,AudioAPI 现在可以处理从对等连接中从远程方获取的音频流源。

要进行测试,请访问Muaz Khan 的实验页面。我不确定这次推出的 Firefox 版本是什么,但我要感谢团队推出它!

chrome bug 已移至 AudioAPI 团队cr bug 以跟踪进度

于 2014-06-20T13:25:58.840 回答