如何在Chrome浏览器中从MediaStream制作MP4

bzzcjhmw  于 2023-03-21  发布在  Go
关注(0)|答案(3)|浏览(202)

MediaRecorder.isTypeSupported('video/mp4')在Chrome中是false,所以我找到了MediaStreamRecorderhttps://github.com/streamproc/MediaStreamRecorder

var recorder = new MediaStreamRecorder(stream, {
  mimeType: 'video/mp4',
});
// also
recorder.mimeType = 'video/mp4';

但输出为webm,正如我使用ffmpeg -i检查的那样

Input #0, matroska,webm, from '/Users/otiai10/Downloads/example.mp4':
  Metadata:
    encoder         : Chrome
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)

这段视频可以在Chrome上播放,但不能在QuickTime播放器上播放。
Here是这个问题的更多细节和(不是!)工作示例。
据说muaz-khan/Ffmpeg.js可以将webm转换为mp4,但文件大小很重要。
是否有任何变通方案来记录和保存为mp4?

xghobddn

xghobddn1#

好吧,那是我的误会。
有关详细信息,请参见https://github.com/streamproc/MediaStreamRecorder/issues/117
MediaStreamRecorder可以将音频录制为WAV,将视频录制为WebM或Chrome上的动画gif
没有mp4。

qojgxg4l

qojgxg4l2#

checkout ffmpeg.wasm
您可以通过以下方式安装:

# Use npm
$ npm install @ffmpeg/ffmpeg @ffmpeg/core
# Use yarn
$ yarn add @ffmpeg/ffmpeg @ffmpeg/core

然后,你可以把你的blob转换成mp4文件,看看他们在我分享的链接中提供的例子。

vjrehmav

vjrehmav3#

虽然不能直接在mp4中记录,但可以将生成的webm文件传递给webm-to-mp4进行转换:

const webmToMp4 = require("webm-to-mp4")
 
const mp4 = webmToMp4(webm)

该模块可以编译为在浏览器中工作,因为它在幕后使用了ffmpeg.js。

相关问题