使用 AVCaptureMovieFileOutput 记录的时间差异
Posted
技术标签:
【中文标题】使用 AVCaptureMovieFileOutput 记录的时间差异【英文标题】:Difference in time recorded using AVCaptureMovieFileOutput 【发布时间】:2013-05-27 10:12:33 【问题描述】:我通过设置最大持续时间限制使用AVCaptureMovieFileOutput
录制了一个电影文件。
例如:如果我想录制 10 秒的视频,我已经为电影文件设置了最大持续时间和其他属性,如下所示...
Float64 TotalSeconds = 10;
int32_t preferredTimeScale = 30
CMTime maxDuration = CMTimeMakeWithSeconds(TotalSeconds, preferredTimeScale);
aMovieFileOutput.maxRecordedDuration = maxDuration;
aMovieFileOutput.minFreeDiskSpaceLimit = 1024 * 1024;
但是录制的视频只显示 9 秒(我使用 MPMoviePlayerController
播放),为什么会有那个时差。如何准确录制 10 秒。我在设置最大持续时间时做错了什么。谢谢。
【问题讨论】:
【参考方案1】:请确保输出具有良好的帧率
#define CAPTURE_FRAMES_PER_SECOND 30
//SET THE CONNECTION PROPERTIES (output properties)
AVCaptureConnection* captureConnection = [self.movieFileOutput connectionWithMediaType:AVMediaTypeVideo];
if(captureConnection.supportsVideoMinFrameDuration) captureConnection.videoMinFrameDuration = CMTimeMake(1,CAPTURE_FRAMES_PER_SECOND);
if(captureConnection.supportsVideoMaxFrameDuration) captureConnection.videoMaxFrameDuration = CMTimeMake(1,CAPTURE_FRAMES_PER_SECOND);
CMTimeShow(captureConnection.videoMinFrameDuration);
CMTimeShow(captureConnection.videoMaxFrameDuration);
【讨论】:
以上是关于使用 AVCaptureMovieFileOutput 记录的时间差异的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)