AVCaptureMovieFileOutput - как сохранить видео - PullRequest
4 голосов
/ 16 августа 2011

Я использую следующий код для захвата видео и сохранения его в папке документов моего приложения:

        AVCaptureDeviceInput *captureInput = [AVCaptureDeviceInput deviceInputWithDevice:[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] error:NULL]; 

    m_captureFileOutput = [[AVCaptureMovieFileOutput alloc] init];


    captureSession = [[AVCaptureSession alloc] init]; 

    [captureSession addInput:captureInput];
    [captureSession addOutput:m_captureFileOutput];

    [captureSession beginConfiguration]; 
    [captureSession setSessionPreset:AVCaptureSessionPresetHigh]; 
    [captureSession commitConfiguration]; 


    [captureSession startRunning];

...some function that starts the recording process...

    [m_captureFileOutput startRecordingToOutputFileURL:url recordingDelegate:self];

...some function that ends the recording process...

    [m_captureFileOutput stopRecording];

Суть в том, что моя цель - записывать до 9 часов видео одновременно. Практически, возможно ли записать видео такого размера, используя этот метод? Кодирует ли AVCaptureMovieFileOutput и сохраняет ли оно видео на диск в режиме реального времени при получении кадров с камеры, или все видео буферизуется в ОЗУ перед обработкой после вызова [m_captureFileOutput stopRecording];?

Если такой подход не подходит для записи видео такой длительности, что может быть разумной альтернативой?

Спасибо, Джеймс

1 Ответ

4 голосов
/ 16 августа 2011

Уверен, что AVCaptureMovieFileOutput добавляет к файлу и не использует буфер в памяти (возможно, это так, но он сбрасывает его в файл, прежде чем он становится слишком большим) ... некоторые доказательства этого можно увидеть в свойстве movieFragmentInterval здесь . Также я использовал этот метод для записи в файл для больших файлов, и он работает нормально, если бы он хранил файл в памяти, то при некоторых предварительных настройках достаточно бы быстро исчерпал память (например, 1280x720)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...