Android相机延时摄影是如何实现的

2022-11-19 09:57:52 浏览数 (1)

关于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~~

0 人点赞