Разница во времени, записанная с использованием AVCaptureMovieFileOutput
Я записал файл фильма, используя AVCaptureMovieFileOutput
установив максимальный предел продолжительности. Например: если я хочу записать 10-секундное видео, я установил максимальную продолжительность и другие свойства для файла фильма, как показано ниже...
Float64 TotalSeconds = 10;
int32_t preferredTimeScale = 30
CMTime maxDuration = CMTimeMakeWithSeconds(TotalSeconds, preferredTimeScale);
aMovieFileOutput.maxRecordedDuration = maxDuration;
aMovieFileOutput.minFreeDiskSpaceLimit = 1024 * 1024;
Но записанное видео показывает только 9 секунд (которые я играл, используя MPMoviePlayerController
), почему эта разница во времени.. Как записать ровно 10 секунд. Я делаю что-то не так при настройке максимальной продолжительности. Thanx.
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);