我想通过更改像素的颜色来处理我在Android手机上录制的视频。我知道如何进行我想要的处理,但是我不知道将所有内容放在一起的最佳方法。

到目前为止我 能够 做是:

  • 从视频(YUV)中获取一个帧
  • 修改YCRCB中的字节
  • 将YCRCB转换为RGB数组
  • 将RGB数组转换为位图

我如何将所有内容放在一起并将其保存为可以在Android上播放的视频?我可以直接从YCRCB信息中获取吗?还是我需要首先转换为RGB或其他格式?

我不需要实时执行此操作,目的是录制视频,保存它,然后对其进行处理并保存处理后的视频。但是我确实有速度。我可以用来加快流程的库吗?我知道Android提供了使用OpenGL的使用,并且我阅读了有关FFMPEG的信息,但我不确定最佳采取途径。

如果有人可以将我指向正确的方向,我会很感激! = d

谢谢!! = d

有帮助吗?

解决方案

您从相机中获得的帧未压缩。这通常不是视频存储的方式,因为未压缩的帧太大,无法由播放器实时读取和显示。取而代之的是,您想编码YUV或RGB帧,以使帧小得多,并且在播放过程中的I/O负载很小。

您应该使用的编码格式必须是设备可以在硬件中解码的编码格式,因为CPU中的解码也非常昂贵。如今,如果您使用H.264进行视频和AAC进行音频,并且使用MP4容器,那么您应该很好。不幸的是,如果您在应用程序中包括H.264/AAC编码器(甚至是开源源)并计划从中赚钱,那么您可能会从该应用中赚钱 MPEG LA, ,谁可能想从您那里收集,因为H.264和AAC都需要许可。我相信,如果您使用已经在设备中许可和安装的编解码器(例如相机应用程序使用的编解码器),则可以避免这种情况。我不知道Android平台是否允许您访问相机编解码器。

就图书馆而言,我认为FFMPEG项目的Libavcodec和Libavformat是最完整的。使用这些LIB,您可以编码H.264/AAC/MP4文件,假设许可问题不会影响您。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top