mediarecorder 如何暂停和恢复录制视频

mediarecorder how to pause and resume recording video

所以我想关于我的问题有很多问题。但是有没有人找到可以在录制电影期间暂停的解决方案或库?或者是否有可用的稳定且可以连接多个 mp4 文件的 api?

Mp4Parser 是基于 java 的库,可让您操作 h264 和 aac 编码流。它不是编码器或解码器。但您可以连接或 trim 流、切换流或将流添加到 mp4 容器等。

为了实现 Pause/resume 功能,您可以使用 MediaRecorder 在用户每次按下暂停(然后恢复)时创建新的录制文件。 所以你会有多个 mp4 文件,然后你可以使用 Mp4Parser 将它们拼接在一起。

此解决方案有问题:

录制的 mp4 文件中的每个流将具有不同的长度(差异将在 ~100 毫秒内。至少这是我注意到的)。当您拼接超过 4-5 个文件时,音频和视频将不同步。

所以在拼接视频之前,您可以 cut/trim 最长的流来匹配使用库的其他流。因为库不是 encoder/decoder 所以你只能 cut/trim 整个帧(音频或视频)。但是,这仍然会减少流长度之间的差异。这种丢帧并不总是很明显,因此您可能会侥幸逃脱。

库存储库中有足够的示例,因此我不会在此处 post 编写任何代码。 Here 是另一个 post,我认为它与我提到的第一步类似(我没有尝试过 OP 提到的代码)。

在 Android API 24 及更高版本中,您可以使用 'MediaRecorder.pause()' 和 'MediaRecorder.resume()' 方法,这将允许您暂停和继续录制,就好像什么都没发生一样