修改MP4文件二进制内容,实现安卓Camera2旋转录制视频画面功能

本文介绍了如何解决使用Camera2录制的视频因缺失旋转设置导致的视角旋转问题。通过解析和修改MP4文件的二进制内容,特别是moov/trak/tkhd中的matrix字段,来实现视频旋转,而不是直接在录制过程中处理。这种方法模拟了Camera的setOrientation方法,通过修改文件标志位来指示播放器旋转视频。
摘要由CSDN通过智能技术生成

Camera2比起Camera的自定义程度更高一点,比如可以同时输出多个视频流分别用于显示预览画面和录制视频。但是!不同于Camera可以直接使用setOrientation方法直接设置视频旋转角度,Camera2没有提供类似的方法。此外,由于MediaRecorder类的一些问题,我使用了自定义的类来对输出的视频流进行处理,也没法使用MediaRecorder类的设置旋转角度方法。

这样的结果就是,使用前置摄像头录制的视频,默认视角是旋转了90°的,不符合正常观看的要求。

为了解决这个问题,我查了不少资料,对Camera2自身设置属性和对自定义的视频录制类的修改都没有正确的旋转视频的角度。在失败了很多次之后我选择了从MP4本身的文件格式入手。

这个方法的原理是模仿Camera中的setOrientation。这个方法并没有真正旋转视频的内容,只是在MP4视频的内容中对应旋转的标志位加入了旋转的记号,这样,在播放器进行播放时,读取到对应的内容就知道应该如何旋转视频的角度。我想模仿这个方法,通过解析MP4文件的二进制内容,找到标记旋转角度的位置并进行修改,实现视频录制文件的旋转。

我参考了这两个网站

Online Mp4 Parser : https://www.onlinemp4parser.com/

MP4文件格式解析 : https://www.cnblogs.com/ranson7zop/p/7889272.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值