Разница во времени, записанная с использованием 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);
Другие вопросы по тегам