Android 是否可以在视频文件仍在写入时处理视频帧?

Android 是否可以在视频文件仍在写入时处理视频帧?,android,video-processing,android-mediarecorder,Android,Video Processing,Android Mediarecorder,目标是: 在Android中,我拍摄一段视频,处理每一帧视频,并将处理后的视频帧记录到输出视频文件中 当然,如果它可以实时实现,那就太完美了。然而,视频记录fps为15,并且每帧的平均处理时间约为1/10秒,即10帧/秒。所以我不能用实时的方式来做。(顺便说一句,即使帧处理速度约为1/15秒,也没有有效的方法从相机获取帧数据。PreviewPicture的更新速度明显慢于真实的fps) 所以我计划启动另一个线程,同时视频正在录制到一个视频文件,比如说,名为videoFileBefore.mp4。

目标是: 在Android中,我拍摄一段视频,处理每一帧视频,并将处理后的视频帧记录到输出视频文件中

当然,如果它可以实时实现,那就太完美了。然而,视频记录fps为15,并且每帧的平均处理时间约为1/10秒,即10帧/秒。所以我不能用实时的方式来做。(顺便说一句,即使帧处理速度约为1/15秒,也没有有效的方法从相机获取帧数据。PreviewPicture的更新速度明显慢于真实的fps)

所以我计划启动另一个线程,同时视频正在录制到一个视频文件,比如说,名为videoFileBefore.mp4。显然,videoFileBefore.mp4处于重新编码模式。但是我想打开这个文件,处理可用的帧,然后将它们写入另一个新的视频文件,比如videoFileAfter.mp4。 如果视频录制时间为10秒,则应用程序需要额外5秒才能完成视频处理。整个过程为15秒。(此处假设视频录制所需时间很短。更准确地说,我们可以将其添加进来)

第二个选项是:我等待处理视频文件videoFileBefore.mp4,直到录制完成,整个时间是: 10秒+15秒=25秒。 所以我更喜欢第一种选择:在编写视频文件时处理它

但现有的视频格式似乎不支持这种操作。
有什么想法吗?

写的问题,从读到写的解决方案是关于mp4编码/解码时间,这部分会让你丧命。你有录音时间吗?我的意思是,若你们有一些固定的限制,你们可以很容易地计算你们的缓冲区需要存储在缓冲区的图像,而不是保存到一个文件处理后。谢谢。问题是录制时间是随机的。它可能很长,大约一个小时。我计划提高帧处理速度。如果我可以将帧处理速度提高到每秒15-20帧,我如何直接使用MediaRecorder的流式输出数据?我不想使用PreviewPicture数据,这是非常缓慢的。