Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

recording a remote webrtc stream with RecordRTC

I am using Opentok JavaScript WebRTC library to host a 1-to-1 video chat (peer-to-peer). I can see my peer's video and hear the audio flawlessly.

My wish is to record audio / video of other chat party (remote). For this purpose, I'm using RecordRTC. I was able to record the video of other chat participant (video is outputted to HTML video element), but, so far, I have not succeeded in recording audio (a dead-silence .wav file is as far as I could get). Using Chrome Canary (30.0.1554.0). This is my method:

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 is a custom property i assigned to HTMLVideoElement object by modifying source of opentok js library. It contains MediaStream object linked to respective < video > element.

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

Video is recorded. Audio file is also created, it has a length that is close to video's length, however, it's completely silent (and yes, there was a lot of noise making on the other side during recording)

I've tested this with video element which displays my webcam's video stream (and audio), and it worked: both audio and video were recorded:

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

Is there something special about streams originating from a remote location? Any guidance on this issue would be very helpful.

like image 720
benas123798 Avatar asked Jul 04 '13 16:07

benas123798


2 Answers

This is the same issue occurs in following situations...

  1. If not a stereo audio (dual channel audio)...i.e. it is mono audio
  2. If audio input channels are not equal to audio output channels
  3. If audio input device is not the default device selected on chrome

I'm still trying to find the actual issue.

I added this experiment for testing purpose... see console...

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

Updated at: Saturday, 1 February 2014, 09:22:04 PKT

Remote audio recording is not supported; and this issue is considered as low-priority wontfix:

  1. Support feeding remote WebRTC MediaStreamTrack output to WebAudio
  2. Connect WebRTC MediaStreamTrack output to Web Audio API

Updated at March 28, 2016

Remote audio+video recording is now supported in RecordRTC, since Chrome version 49+.

Firefox, on the other hand, can merely record remote-audio.

like image 97
Muaz Khan Avatar answered Oct 23 '22 20:10

Muaz Khan


If Chrome/WebRTC/Opus outputs mono audio by default and if that is the problem here, I see two options in that case:

  1. By making opus output stereo - not sure how.
  2. By making the RecordRTC/Recorderjs code work with mono

Or does anyone know any other recording library that works?

like image 39
Volverine Avatar answered Oct 23 '22 20:10

Volverine