既然传上来了就要写个说明对吧
以前做的一个录像功能, 传上来留个记录, 其实就是一个录制视频的功能, 原本想直接调用系统相机, 但是需要打开界面自动录像, 只好自己做一个出来. 代码是照着training和guide里面的camera部分写的, 文档里有坑, 有的地方感觉写的不明不白的, 一些算法比如说计算orientation之类的是从aosp里抄的, 看系统相机app代码的时候发现其实里面已经有自带一个参数自动开始录像, 但是还没有开放......
做的时候遇到几个问题
- 录像的时视角的远近时和预览比例有关的, 一开始做的时候是全屏的, 结果发现录像的时候里面的物体都很大, 需要离很远才行, 后来找了几个录像的app出来发现默认都不是全屏的, 试了一下发现4:3是最远的
- 录出来的视频是转了45°的, 找了一圈发现只能通过android.media.MediaRecorder#setOrientationHint方法设置, 但是这个需要依靠播放器支持才行, 如果不支持还是歪的, 难道相机镜头默认都是横着的? 好像可以直接修改接受到的视频数据每一帧的角度, 但是比较麻烦还涉及到解码转码之类的.
- setParameters会报错, 这个一般都是setPreviewSize的数值不支持, 之前做的时候放在开始录像前才设置, 但是后来在自己手机上试的时候会报错, 看到官方文档说要放在surfaceChange方法里面, 并且改变size的时候要停止预览才行, 改了之后果然可以用的.
- 可以封装成单独的view方便使用, 但是感觉不太会有什么地方需要用到这个了= =
- 把surfaceview改成用textureview.
- 增加一些功能, 如缩放, 手动切换视频比例之类的.