2011-11-30 160 views
3

我想通过更改像素的颜色来处理我在Android手机上录制的视频。我知道如何处理我想要的处理,但我不知道把所有东西放在一起的最佳方式。Android处理视频,YCrCb帧到视频

到目前为止的事情,我可以做的是:

  • 获取从视频作为的YCrCb(YUV)
  • 单帧修改或YCrCb字节我多么希望
  • 转换或YCrCb到RGB排列
  • RGB阵列转换为位图

我怎样才能把è一起合作并将其保存为可以在Android上播放的视频? 我可以直接从YCrCb信息?或者我需要先转换为RGB还是其他格式?

我不需要实时做到这一点,其目的是录制视频,保存视频,然后处理视频并保存处理后的视频。 但是我的确有速度。 我可以使用它们的库来加速这个过程吗?我知道Android提供了OpenGL的使用,并且我已经阅读了关于ffmpeg的内容,但我不确定最佳路径。

如果有人能指出我在正确的方向,我将不胜感激! = D

谢谢! = D

+0

我知道一个.yuv视频格式,如果只是一系列的YUV帧,并且没有标题或其他帧速率等信息。如果是这样,将每个YCrCb帧写出来是否可行。 yuv文件,并从那里我可以将其转换为更有用的视频格式? – Kage

回答

2

您从相机获取的帧是未压缩的。这通常不是视频存储的方式,因为未压缩的帧太大而无法被播放器实时读取和显示。相反,您希望对您的yuv或rgb帧进行编码,以使帧更小,并且回放期间的I/O负载很小。

您应该使用的编码格式必须是您的设备可以在硬件中解码的编码格式,因为CPU中的解码也非常昂贵。现在,如果您将H.264用于视频和音频的AAC,并使用MP4容器,那么您应该会很好。不幸的是,如果您的应用中包含H.264/AAC编码器(甚至是开源软件)并计划从中获利,那么您可能会从MPEG LA获得访问权限,他们可能希望从您那里收集,因为H.264和AAC要求许可。我相信如果您使用已获得许可并安装在设备中的编解码器(如摄像机应用程序用于录制的编解码器),则可以避免这种情况。我不知道Android平台是否允许您访问相机编解码器。

至于图书馆,我认为从ffmpeg项目的libavcodec和libavformat是最完整的。使用这些库,您可以编码H.264/AAC/MP4文件,假设授权问题不会影响您。

+0

非常感谢您提供这些信息!这是超级有用=) 我会努力让ffmpeg工作,并尝试编码我的帧,并使用你建议的mp4容器。 – Kage