使用 MediaRecorder 将音频和视频流合并为一个文件 [重复]

Posted

技术标签:

【中文标题】使用 MediaRecorder 将音频和视频流合并为一个文件 [重复]【英文标题】:Combine audio and video streams into one file with MediaRecorder [duplicate] 【发布时间】:2019-03-17 00:34:51 【问题描述】:

我正在制作一个小型交互式动画/游戏(使用 PixiJS 在画布上)并希望为用户提供保存渲染动画的选项。经过我的研究,MediaRecorder 似乎是我应该用来录制和渲染视频的 API。但是 MediaRecorder 构造函数只允许将一个流用作源。

如何合并其他流(音频效果),以​​便录制的视频文件中也有声音?

【问题讨论】:

【参考方案1】:

使用视频流的轨道和音频流的轨道创建一个新的(组合的)媒体流。为此,请使用MediaStream constructor:

let combined = new MediaStream([...videoStream.getTracks(), ...audiostream.getTracks()]);
let recorder = new MediaRecorder(combined);

即使每个流中可能只有一个轨道,但如果每个流中有多个轨道,这也可以。

选择某些频道

当然,如果你想丢弃视频流的所有音轨和音频流的视频轨,

let combined = new MediaStream([...videoStream.getVideoTracks(), ...audioStream.getAudioTracks()]);

【讨论】:

这不起作用。它将只播放第一首曲目,如下所示:***.com/questions/42138545/… @iwaduarte 你能解释一下你链接的问题与这个答案有什么相似之处吗?它的 OP 没有将流与 MediaStream API 混合,甚至在声明后也没有使用第二个流 看答案。你也在你的构造函数上混合。我没有看到你的困惑

以上是关于使用 MediaRecorder 将音频和视频流合并为一个文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android-MediaRecorder录像机(视频)

Android 10 源码MediaRecorder 录像流程:MediaRecorder 配置

MediaRecorder,录制音视频音量非常小

有没有办法使用音频文件作为 MediaRecorder 的来源?

Android:使用 MediaRecorder 录制音频 - 文件不播放

Android开发之MediaRecorder类详解