Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
911 views
in Technique[技术] by (71.8m points)

javascript - Record as Ogg using MediaRecorder in Chrome

Is there a way we could record ogg format in Chrome while working with MediaRecorder ? I believe, Chrome by default supports WebM. Following is what I do

    navigator.mediaDevices.getUserMedia({ audio: true })
    .then(stream => {
        rec = new MediaRecorder(stream);

        rec.ondataavailable = e => {
            audioChunks.push(e.data);
            if (rec.state == "inactive")
            {
                let blob = new Blob(audioChunks, { 'type': 'audio/ogg; codecs=opus' });
            }
        };

    })
    .catch(e => console.log(e));
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

From the list of supported formats here, it appears it does not.

However, here are some libraries that help you record to alternative formats:

1) Opus Media Recorder: https://github.com/kbumsik/opus-media-recorder

Formats (Container.Codec): Ogg.Opus, WebM.Opus, WAV.PCM
Browsers: Chrome, Firefox, Safari, Edge

Note: Does not let you change the sampling rate for Opus recording from the default of 48000hz. (For example, this means its output can't directly be submitted to DialogFlow, since it requires Opus audio to have a sample rate of 16000hz.)

2) Opus Recorder: https://github.com/chris-rudmin/opus-recorder

Formats: Ogg.Opus, WAV.PCM
Browsers: Chrome, Firefox, Safari, Opera, Edge

3) LibFlac: https://github.com/mmig/libflac.js

Formats: FLAC.FLAC
Browsers: (unknown, but probably same as the above)

See the speech-to-flac example for how to use with microphone input.

4) WebAudioRecorder: https://github.com/higuma/web-audio-recorder-js

Formats: Ogg.Vorbis, MP3.MP3, WAV.PCM
Browsers: (unknown, but probably same as the above)

5) Libraries augmenting MediaRecorder with WAV/PCM support

A: https://github.com/muaz-khan/RecordRTC (recorderType: RecordRTC.StereoAudioRecorder)
B: https://github.com/streamproc/MediaStreamRecorder (mimeType: "audio/wav" or "audio/pcm")

6) Manual WAV.PCM encoding

For WAV.PCM, the format is simple enough you don't necessarily need a library. If you prefer a "lower level" approach, you can look through the examples here: https://stackoverflow.com/a/54213814/2441655


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...