Android:Camera2 - 减少连续视频录制期间视频之间的延迟 chunks/segments
Android: Camera2 - Reducing delay between video chunks/segments during continuous video recording
我目前正在开发一个 android 应用程序,它使用 camera2 API 连续录制视频,同时将其分段为 1 分钟的块。
我的要求是1分钟的chunks/segments后期要无缝合并
目前我可以通过设置定时器在时间段结束时重新开始录制来实现块保存:
timer.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
Log.d(TAG, "Inside timer")
if (!stopRecording) recordSession() else cancel()
}
}, 0, duration)
其中持续时间是我需要的剪辑的长度。
录制是使用 mediaRecorder 完成的,每次初始化时都会输出到不同的文件。
在这一切结束时,如果我合并视频,视频中会出现明显的中断(丢失几帧)并且还会跳过一些音频,很明显视频“跳转”了。
请告诉我如何做到无缝。
P.S。我已经看过 grafika 示例(没有音频,它使用的是 camera1 API 而不是 camera2)
我也看过一些 SO 帖子,比如
Android: Split video during capture
但是延迟还是没有解决
如果你需要它是无缝的,你需要研究 MediaRecorder 自己的时间限制选项,或者可能必须从 MediaCodec 和 MediaMuxer 的 lower-level API 对象构建东西。
具体看setNextOutputFile and setMaxOutputDuration。这应该允许您在文件之间自动转换,每个片段都有特定的长度。希望这将是无缝的。
如果没有,MediaCodec 和一个或多个 MediaMuxer 的某种组合应该可以让您构建它,但是要正确连接在一起需要很多东西。
我目前正在开发一个 android 应用程序,它使用 camera2 API 连续录制视频,同时将其分段为 1 分钟的块。
我的要求是1分钟的chunks/segments后期要无缝合并
目前我可以通过设置定时器在时间段结束时重新开始录制来实现块保存:
timer.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
Log.d(TAG, "Inside timer")
if (!stopRecording) recordSession() else cancel()
}
}, 0, duration)
其中持续时间是我需要的剪辑的长度。 录制是使用 mediaRecorder 完成的,每次初始化时都会输出到不同的文件。
在这一切结束时,如果我合并视频,视频中会出现明显的中断(丢失几帧)并且还会跳过一些音频,很明显视频“跳转”了。
请告诉我如何做到无缝。
P.S。我已经看过 grafika 示例(没有音频,它使用的是 camera1 API 而不是 camera2) 我也看过一些 SO 帖子,比如 Android: Split video during capture 但是延迟还是没有解决
如果你需要它是无缝的,你需要研究 MediaRecorder 自己的时间限制选项,或者可能必须从 MediaCodec 和 MediaMuxer 的 lower-level API 对象构建东西。
具体看setNextOutputFile and setMaxOutputDuration。这应该允许您在文件之间自动转换,每个片段都有特定的长度。希望这将是无缝的。
如果没有,MediaCodec 和一个或多个 MediaMuxer 的某种组合应该可以让您构建它,但是要正确连接在一起需要很多东西。