我目前正在开发一款应用,用于读取相机图像并使用OpenCV处理它们。 我想将原始图像存储为“普通”视频,并在处理后删除处理后的图像(在提取信息之后)。 为此,我基本上需要将图像流编码为h264。 在普通的cpu上使用ffmpeg或其他解决方案是不可能的。必须使用内部硬件加速完成。 因此,我实际上有三个问题:
somebdy是否知道如何使用内部hw-modules对视频进行编码来实现h264编码?
或者ffmpeg在Android上真的支持这个吗?
或者在“常规”编码过程中是否有办法访问图像流?
非常感谢!
答案 0 :(得分:2)
您可以运行 MediaRecorder 以使用h264硬件编码器(如果可用)创建视频,并且同时注册预览帧处理程序。但是,我不能保证所有预览帧都会向两个方向发展。
或者,您可以使用libstagefright编译ffmpeg,它将使用硬件avc编码器。
或者,您可以直接从您的应用中使用stagefright(通过JNI)。
最后,您可以按照libstreaming的方法为您的平台找到最佳录制API(无论是 MediaRecorder API,还是 MediaCodec 缓冲区到-buffer方法,需要Android 4.1,或 MediaCodec 表面到缓冲区方法,需要Android 4.3。