Android - 在视频

时间:2018-04-02 00:22:27

标签: android android-camera2

我有一个相机应用程序,可在录制时分析视频(检测相机移动)。 我使用camera2 API并在录制视频时使用相机(使用MediaRecorder)获取帧。但是应该再次在服务器上分析视频文件。 问题是我在手机上分析非压缩帧。但服务器在压缩和解压缩后分析视频帧。而这些框架的定义是不同的。

我的MotionDetector从相机中获取帧,使用相位相关计算当前帧和上一帧之间的移位。 将视频文件上传到服务器后,将使用相同的MotionDetector对其进行分析。

如果我将未经过协议的帧上的帧间移位与压缩帧上的帧间移位进行比较 - 它们显然是不同的。

压缩后有没有办法获取帧?

目前数据流如下:

1. Frames from camera
2.1 frames from camera displayed on a screen
2.2 frames from camera are fed to MediaRecorder.
2.3 frames from camera are fed to my MotionDetector
3. MediaRecorder encodes camera frames into H264 format.
4 MediaRecorder output stored to file

我需要数据工作流程如下:

1. Frames from camera
2.1 frames from camera displayed on a screen
2.2 frames from camera are fed into MediaRecorder.
3. MediaRecorder encodes camera frames into H264 format.
4.1 MediaRecorder output stored to file
4.2 MediaRecorder output goes to MediaCodec
5. MediaCodec decodes frames.
6. frames from MediaCoded are fed to MotionDetector.

有办法吗?

1 个答案:

答案 0 :(得分:1)

如果您停止使用MediaRecorder,并且只是直接使用MediaCodec来编码视频,那么您应该能够检查编码的视频缓冲区,然后再将其写入MediaMuxer以存储到磁盘。

这比直接使用MediaRecorder要复杂得多,但对于这样的情况更灵活。