Android在后台连续录制带有编辑帧



我想实现相机应用程序,我不知道使用哪个API。您会为这些标准选择哪些api ?

  • 活动显示全屏摄像头预览。
  • 用户可以从Activity启动/停止有/无声音的视频录制。
  • 如果活动在前景,显示全屏相机预览(可能在onResume()中开始)。
  • 如果活动进入后台,预览将停止(可能在onPause()中),但记录将继续在后台显示通知。
  • 添加日期+时间+一些绘图到所有视频帧去编解码器(不是预览)的前景/背景记录。
  • Android API 23+(可以更高)。

API可供选择:
Camera 1, Camera 2, CameraX, MediaRecorder, MediaCodec + Muxer, OpenGL表面,…?

你会用什么API来实现它?有什么例子吗?芬兰湾的科特林优先。
Activity/Fragment/Service不是问题的一部分。

因为你想在发送到视频编码器之前编辑每一帧,你可以使用camera2或cameraX (ImageAnalysis+Preview用例),至少高达1080p的分辨率。如果你想录制高于1080p的图像,那么你可能需要使用camera2.

对于编辑,您可以使用EGL呈现,这将是相当有效的,但是文本呈现是复杂的,所以您希望找到一些库来帮助完成。虽然在CPU上编辑也是如此。

对于Camera2,对于EGL,你可以创建一个SurfaceTexture用于输入,你可以将其传递给Camera2(通过一个Surface),也可以将其写入到一个Surface,该Surface将进入MediaRecorder/MediaCodec。对于CPU,你可能需要一个Camera->ImageReader/ImageWriter->MediaRecorder对,中间有编辑功能。

对于CameraX ImageAnalysis,您获得需要从CPU读取或发送到ImageWriter进行EGL处理的图像对象。

如果你将视频保存到磁盘,MediaRecorder应该可以正常工作。MediaCodec + MediaMuxer为您提供更多的控制(通过网络发送帧等),但更复杂。

在相机方面,Camera2是唯一的选择,因为CameraX目前不支持视频。

最新更新