New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 261321 link

Starred by 113 users

Issue metadata

Status: Verified
Closed: Jan 2016
EstimatedDays: ----
NextAction: ----
OS: All , Chrome
Pri: 2
Type: Launch-OWP
Launch-Accessibility: ----
Launch-Exp-Leadership: ----
Launch-Leadership: ----
Launch-Legal: ----
Launch-M-Approved: ----
Launch-M-Target: ----
Launch-Privacy: ----
Launch-Security: ----
Launch-Test: ----
Launch-UI: ----
Rollout-Type: ----

Blocked on:
issue 262211
issue 556730

issue 559262

Sign in to add a comment

MediaRecorder API (OWP Launch Tracking)

Project Member Reported by, Jul 17 2013

Issue description

Change description:
Implement a recording API for MediaStreams

Changes to API surface:
Add MediaRecorder API

Public standards discussion:
Mozilla tracking bug:

Support in other browsers:
Internet Explorer: Not yet, spec editor working for MS.
Firefox: Actively working on this
Safari: No
Opera: By default, once we implement it :)


Comment 1 by, Jul 17 2013

Blockedon: chromium:113676

Comment 2 by, Jul 19 2013

Blockedon: -chromium:113676 chromium:262211
I'm super interested in it. Any schedule for this?
Yes, we could definitely use this. At we allow users to record songs. Recording is done in web audio / javascript which unfortunately is sensitive to garbage collection. Furthermore, the recordings are uploaded in wav-format which consumes a lot of bandwidth.

Media Recorder API with glitch-free audio recording and the ability to encode into e.g. ogg would be of great value to us. I'd be happy to demo the app and discuss the technical details if anyone is interested.

Comment 5 by, Jan 21 2014

"How do I record my audio into Ogg/MP3" is probably the most-asked media question.
I don't want to spam this thread but where to check progress of this feature or when could it be expected to be implemented?
@groby: Any update on the progress?
We are going to try and tackle this soon in Stockholm. Assigning to Tommi.
Labels: Cr-Blink-WebRTC
@sergel: How is this issue related to ?
@mtomasz Isn't it referring to the same issue? I thought this was the launch bug and 262211 was just a general "implement this" bug to track progress? Or am I wrong?

Comment 12 by, Sep 24 2014

Labels: -Cr-Blink-WebRTC Cr-Blink-GetUserMedia
We at VidTitan are also super interested in this. if we can help advance this we would more then willing to discuss.

Comment 14 by, Nov 14 2014

I really really need this feature :)

Comment 15 by, Dec 17 2014

Would love to see this feature implemented as well!

Comment 16 by Deleted ...@, Feb 11 2015

Desperate for this feature!

Comment 17 by Deleted ...@, Feb 11 2015

Hi any new developments on this feature?

Comment 18 by Deleted ...@, Mar 18 2015

Same here, would love to see this implemented.

Comment 19 by Deleted ...@, Mar 19 2015

up vote for this feature! At least OGG encoding, because uploading WAV files is too long and encoding to MP3 in Javascript using a port of LAME is really slow.
Ogg is just a container format. You probably mean Ogg Vorbis. Though I think Opus will/should be the supported encoding, considering it is supported for decoding already (and to my understanding used to compress WebRTC audio sent over the wire already). And yes, it would be a huge improvement. I'm zipping wav in browser web workers and it is very ineffective. 

So upboat for the feature request and I'm waiting too.
Vorbis and Theora should both be possible, and will respectively provide audio and video encoding, because both are free from licensing fees. On the other hand, something like AAC encoding will cost Google a boatload of money.
It would be great if MediaRecorder could also take an AudioBuffer instead of a MediaStream. That would allow audio encoding faster than real-time, making in-browser audio transcoding practical. Web Audio's decodeAudioData() allows faster-than-real-time decoding, but there is no corresponding encoding API (as specced MediaRecorder limits encoding to real-time). I mentioned this on the spec list but there wasn't much discussion around it.

Think about an audio editor or format converting tool in the browser. It's simply not competitive if you have to sit and wait for the entire duration of the audio for it to finish encoding.
Firefox already solved the bug, Chrome please do it ASAP, why we need to include external lib for encoding. Upload wav format is difficult.
@tommi: Do you have any update on this?

Comment 26 by, Jul 15 2015

Niklas' team is taking this over :)
mtomasz@ see child  bug 262211  for ongoing activity.
Please use as DD insead of any other links around
(apologies, there was some issue sharing).

Comment 30 by, Aug 21 2015

I filed
in response to the original DD- the issue appears to be the same in the new DD:

If the output format and parameters are the same as the input format and parameters, the media is still re-encoded, at a considerable cost of system resources.

I also suggested that Opus be used as a final audio encoding format (currently audio is a ??? and no audio support will be in the initial implementation), as it's low latency, high compression, and what nearly all webrtc users will be transmitting.

There's not enough other comments on the new DD for me to want to start to muddy it up, but I did want to make sure these comments did not get lost. Thanks team.
Labels: M-48
Labels: -M-48 M-49
Moving to 49. We'll be pretty much feature complete for a first release in 48 (audio, video, VP8, VP9) but we'll keep it behind the experimental flag until after the cut.
Blockedon: chromium:556730
Labels: OS-iOS OS-Chrome PrivacyReview-556730
Labels: -OS-iOS
Blocking: chromium:559262
I think I have found a bug in MediaRecorder.ondataavailable, I am using time slices MediaRecorder.start(300000). 

I add an audio track to the video stream which is being used by MediaRecorder but this causes ondataavailable to fire frequently which I believe it shouldn't do. If I don't add the audio track all works as expected, ondataavailable is only fired at the set intervals.
hello@neilkinnish, would you mind filing a separate bug for this?

Comment 39 by, Dec 8 2015 of course, sorry didn't mean to pollute this issue.

Comment 40 by, Dec 8 2015

Doesn't this example uses Opus codec to compress the recording and send it to the WebRTC peer and it works in the Chrome as well?

I can see how WebRTC peer could also be the server, like node.js. So you could stream it to the server and then store it there, or post-process it or whatever.

Comment 41 by, Dec 11 2015

I've noticed that this feature works in 47 on Mac if you enable the flag.  However, I've been unable to get it to work in Chrome Beta (48.0.2564.43) on Android.

Can you advertise when this might be available for development purposes with mobile Chrome?
#41: Support for Android was landed in 362536,  48.0.2564.34 -> 359700, so 
it's not enabled. Check OmahaProxy until
your dev catches up.

Comment 43 Deleted

Comment 44 by, Dec 15 2015

A noob's question. wrote "Moving to 49 ... we'll keep it behind the experimental flag until after the cut". Does it mean its planned that the feature will be experimental even in Dev channel revision until few days left before release of version 49? Thanks in advance.
boqapt@, the flag was just removed on master branch, so it will appear in Dev channel without a flag within a week from now.
Hi there, I'm checking out the just released dev and in the log I can see a few mediarecorder api related changes...I'm trying to use it but it seems like audio recording is not working...Am I doing something wrong or the audio part has been killed from the plans? 
Audio should work, so please file a separate bug for the case that's not working for you.
Hi, I am implemented a webrtc system, and I wanna know if I am able to record media (video, audio) with the mediarecorder API on chrome now., but only using Chrome Browser not Chromium
Hi i tested the mediarecorder API on chrome 47, with "enable experimental apis" and "Enable experimental Web Platform features" and it's working fine, but it's not recording audio just video.
Labels: Cr-Blink-MediaStreamRecording
@r1c4rd0.10100: please file a separate bug if you see
something not working as it should (add the label

(cont'd #50) ... add the label Cr-Blink-MediaStreamRecording
to get it appropriately directed, thanks!
(cont'd #50) ... add the label Cr-Blink-MediaStreamRecording
to get it appropriately directed, thanks! Where Do I add the label?
Labels: Cr-Blink-MediaStreamRecording 
@r1c4rd0.10100: when you go to there's a section below to add Labels (I'm not 100% sure if you'll see it, if not then it should be fine, ping this Issue and I'll edit it).
@r1c4rd0.10100: Could you post the bug link here, when you've filed it?
Here is the issue, I didnt see a label section,
Thank you,
Thanks, Ricardo.
I have seen that Chrome 48 release was 2 weeks ago but my Chrome is 47 and it's up to date according to "About google chrome"
Chrome 48 Beta was released on 3rd December: Current stable is 47.

You need to install Beta (which'll overwrite your Chrome Stable) to get 48 and Canary to get 49, I believe (you can install that separately)
Hi, I have a question, I am using MediaRecorderApi, and I am recording the streams good, but in my app I have a streams switch option, from audio/video stream to screen stream and viceversa, and I want to record both of them when switching, both in just one blob when stopping the recording, Can I do this?, when creating a new mediarecorder object we do this "recorder = new MediaRecorder(localStream);", but when the user press the button "screen share" I want to replace localStream for screenStream, Does MediaRecorder have a method for doing this?  
This whole extension is very great, I just have a short question:
Will video/mp4 + h264 & AAC ever be supported, or will it not be implemented due to licensing ?
#62: According to the spec, changes in the recorded Stream Tracks should cause recording 
stop [1] ("Unknown Error: [...] e.g. a Track has been added while recording is occurring").  The
App should bridge these issues by having e.g. several recorders and pausing each one in
turn, then muxing the resulting .webm stream.

@r1c4rd0.10100, soon you can use canvas captureStream for this ( You would to paint your video and screen content on a canvas and then create a single mediastream from that. 

@foxnet, there's no immediate plans to add H.264/AAC.  
@mcasas, the way I read the spec, changes in the stream MAY causes the recording to stop. I don't see the spec saying it should, neither can I imagine a reason for it to.

As an application I should be able to give a mediaStream object to the recorder, and call removeTrack then addTrack to switch the recorded video track, without the recorder failing (unless the track I add cannot be recorded for some reason).

@niklase, going through a canvas is a terrible hack to achieve this!
given that the ignoreMutedMedia property is set to false of course.
Um, looks like this actually is an open issue on the spec:
Ok, thanks guys, I think I am gonna use 2 recorders, one for video/audio and one for screen.
Hi, Have you used the getSenders() method?, Does this method return tracks or a mediastream object?, thank you. 
r1c4rd0.10100@ (#70): could you please use webrtc-discuss@ mailing
lists for such queries? In such list you'll reach a broader audience,
more focused on usability audience of all WebRtc-related matters
(beyond just MR):!forum/discuss-webrtc

Status: Fixed
Status: Verified (was: Fixed)
Bulk verified
Components: -Blink>MediaStreamRecording Blink>MediaStream>Recording
Renamed component Blink>MediaStreamRecording to Blink>MediaStream>Recording. Moving issues to the new component. 
Components: Blink>MediaRecording
Components: -Blink>MediaStream>Recording

Sign in to add a comment