首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用Camera实现SlowMotion和TimeLapse视频记录

如何利用Camera实现SlowMotion和TimeLapse视频记录
EN

Stack Overflow用户
提问于 2016-03-23 10:49:18
回答 1查看 7.3K关注 0票数 4

是否有任何方法来实现慢动作和时间间隔记录使用摄像头API?

我试着使用MediaRecorder设置VideoFrameRateVideoBitRate VideoCaptureRate,但对我来说没有任何效果。

我已经成功地使用JNI实现了,但是我发现它花费了太多的时间,也没有进行优化。

如果您找到任何其他解决方案,请帮助我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-02 10:27:36

我自己解决了这个问题,我分享了我的工作代码,仅仅使用相机API慢动作和时间流逝就实现了。

在开始之前,您必须知道setCaptureRate(double fps)的定义

设置视频帧捕获率。这可以用于设置与录制的视频的回放速率不同的视频帧捕获率。该方法还将记录模式设置为时间间隔。在延时视频记录中,只记录视频。如果应用程序设置与音频相关的参数,则在时间间隔记录会话开始时忽略这些参数。

TimeLapse

对于时间间隔,您需要使用以下相机轮廓,根据您的视频帧的宽度和高度。从下面的轮廓中选择任何一个,或者你可以根据你的需要选择其他的。

代码语言:javascript
复制
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_1080P);

profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_720P);

profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_480P);

现在您需要配置您的视频setCaptureRatesetVideoEncodingBitRate

代码语言:javascript
复制
video_recorder.setCaptureRate(profile.videoFrameRate/6.0f);
video_recorder.setVideoEncodingBitRate(profile.videoBitRate);

最后,您需要将配置好的配置文件设置为MediaRecorder。

代码语言:javascript
复制
video_recorder.setProfile(profile);

慢速运动

对于慢动作,您还需要配置CamcorderProfile,我正在为配置文件使用以下配置。

代码语言:javascript
复制
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH_SPEED_HIGH);
 video_recorder.setCaptureRate(profile.videoFrameRate / 0.25f);
video_recorder.setVideoEncodingBitRate(profile.videoBitRate);
video_recorder.setProfile(profile);

用于慢动作,您必须使用CameraAPI2,否则它将无法工作。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36176085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档