关于Android相机的一些高阶能力,在前面的文章中我们聊到了如何拍摄RAW图,depth图和实现录制慢动作
Android 手机如何拍摄RAW图
使用Camera2获取depth图像
Android手机如何实现慢动作录制
本篇文章我们来简单聊聊如何实现延时摄影这个功能
什么是延时摄影
延时摄影又叫缩时摄影(Time-lapse)、间隔摄影或者定时定格摄影,是一种将画面拍摄频率设定在远低于一般观看连续画面所需要频率的摄影技术。
简单说就是以更小的帧率录制,常规视频帧率(24fps或30fps)进行播放,这样就达到了将几分钟甚至几天压缩在一个较短时间的效果(细心的同学可以发现延时摄影和慢动作刚好相反)
(延时摄影效果,素材来自网络,侵删~)
Android中实现延时摄影
参考手机系统相机,延时摄影为10X的效果
(录制到第10s时,视频文件才1s)
抓取延时摄影模式下的配置参数,标红的两个参数就是实现延时摄影的关键
代码语言:javascript复制mime = "video/hevc"
width = 1920
height = 1080
stride = 1920
slice-height = 1080
color-format = 2130708361
time-lapse-fps = 3.000000
bitrate = 10000000
bitrate-mode = 1
frame-rate = 30
i-frame-interval = 1
实现录制延时摄影10X的效果,我们需要设置3个fps
- 相机帧率,常规设置即可
- frame-rate:30
- time-lapse-fps:frame-rate / 10 = 3.0
frame-rate和time-lapse-fps的设置通过MediaRecorder提供的接口实现
setVideoFrameRate设置frame-rate
setCaptureRate设置time-lapse-fps
从文档注释中可以看到,延时摄影和慢动作模式一样,都是只有视频流而没有音频
setCaptureRate内部设置的两个参数
代码语言:javascript复制public void setCaptureRate(double fps) {
setParameter("time-lapse-enable=1");
setParameter("time-lapse-fps=" fps);
}
~~END~~