使用MediaCodec创建的Android旋转曲面

时间:2016-11-14 10:13:59

标签: android rotation mediacodec

我正在使用Camera2 API从相机中捕获视频。我知道我们需要旋转预览,因为Camera2没有相应的setDisplayOrientation()。能够使用Matrix旋转预览。

我也在使用MediaCodec API对视频进行编码。然而,当我将手机旋转180度时,编码的视频被反转。我对如何旋转编码视频没有想法。

我在配置时尝试了MediaFormat中的KEY_ROTATION。但我想这只是在解码时(输出表面)。

谢谢!

1 个答案:

答案 0 :(得分:1)

Camera2在这里没有直接关系 - 如果你想使用camera2,你可以通过MediaRecorder.getSurface()MediaRecoder.setOrientationHint()方法使用MediaRecorder来设置所需的方向。

如果您使用MediaCodec而不是MediaRecorder,那么那里没有方向标记;相应的方法是MediaMuxer.setOrientationHint,因为所有MediaRecoder都将请求的方向写入视频文件元数据;实际的帧通常不会被编码器旋转。

如果您没有将编码缓冲区包装到视频文件中,而是以其他方式使用它们(用于视频聊天的网络传输等),则需要将方向与编码帧一起传递并应用变换在接收端自己。