0

我通過設置最大持續時間限制使用AVCaptureMovieFileOutput錄製了一個電影文件。 對於例如:如果我想記錄10秒視頻,我已經設定像下面的電影文件的最大持續時間和其它屬性...使用AVCaptureMovieFileOutput錄製的時間差異

  Float64 TotalSeconds = 10; 
     int32_t preferredTimeScale = 30 
     CMTime maxDuration = CMTimeMakeWithSeconds(TotalSeconds, preferredTimeScale); 
     aMovieFileOutput.maxRecordedDuration = maxDuration; 
     aMovieFileOutput.minFreeDiskSpaceLimit = 1024 * 1024; 

但錄製的視頻顯示只有9秒(這是我玩過使用MPMoviePlayerController),爲什麼是那個時間差?如何準確記錄10秒。我在設置最長持續時間時做錯了什麼?感謝名單。

回答

0

請一定要有良好的幀率爲輸出

#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);