Android处理视频,YCrCb帧到视频

时间:2011-11-30 22:49:13

标签: android frame video-processing yuv

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

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

  • 从视频中获取单帧作为YCrCb(YUV)
  • 修改YCrCb中的字节我想要的方式
  • 将YCrCb转换为RGB数组
  • 将RGB数组转换为位图

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

我不需要实时执行此操作,目的是录制视频,保存视频,然后处理视频并保存已处理的视频。 不过我的确有速度。 我可以使用他们的库来加快这个过程吗?我知道Android提供了OpenGL的使用,我读到了关于ffmpeg但我不确定最佳路径。

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

谢谢! = d

1 个答案:

答案 0 :(得分: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文件,假设许可问题不会影响您。