Цель: Использование AVCaptureMovieFileOutput
для записи видео в файл .mov. Во время записи видео я хочу загрузить его на S3. Загружаемая часть должна быть реализована при загрузке нескольких частей. (Mac OS X приложение +10,8)Чтение .mov файл с NSInputStream при записи с AVCaptureMovieFileOutput
Проблема: Как читать из файла .mov в кусках, в то время как файл записывается в с AVCaptureMovieFileOutput
и увеличиваясь в размерах?
То, что я сделал до сих пор:
// session = AVCaptureSession with audio and video inputs
fileOutput = [[AVCaptureSession alloc] init];
[session addOutput:fileOutput]
[session startRunning]
[fileOutput startRecordingToOutputFileURL: fileUrl recordingDelegate:self]
// In async dispatch queue
inputStream = [NSInputStream inputStreamWithFileAtPath:fileUrl]
// schedule in run loop, open and run
В этот момент я начинаю получать stream:handleEvent:
сообщения на объект делегата с NSStreamEventHasBytesAvailable
. Но через несколько секунд сообщения перестают поступать (после общих байтов в 250.000-300.000 байт (0.2MB)). Это происходит, даже если файл .mov увеличивается в размере до> 10 МБ.
Вопросы:
Почему
NSInputStream
делегат не продолжать получать поток событий?Доступны ли данные изначально, не надежно?
В целом ли это приемлемый подход? Или есть другой способ добиться того, чего я хочу?
Спасибо!
Спасибо за ввод, Geraint. В статье упоминается, что в файл нет звука. В моем случае в файл записано аудио. Это делает невозможным? Спасибо –
Если вы просто хотите скопировать файл во время его записи, я думаю, что все должно быть хорошо. Вам не нужно его интерпретировать, просто скопируйте те части, которые были написаны. Вам нужно быть осторожным: размер блока mdat будет обновляться, когда файл будет закрыт. В основном, файл должен записываться последовательно, хотя. В моем примере показано, как использовать кодированные видеоданные во время кодирования: для этого вам необходимо отдельно записать звук (и, возможно, переиздать себя, используя только аппаратное обеспечение для кодирования видео). –
Итак, если я правильно вас понял, ваш образец кода (хотя и интересный) не так уж уместен? Мне нужна полная копия файла .mov, записанного на диск. Вы сосредоточились на потоковой передаче видео на другое устройство? –