Воспроизведение потока видеоданных с помощью QTKit в Mac OS X

Я играл с QTKit пару дней, и мне удалось успешно записать видеоданные в файл с камеры, используя QTCaptureSession и QTCaptureDeviceInput и т. д.

Однако я хочу отправить данные в другое место либо по сети, либо на другой объект в том же приложении (это не имеет значения), а затем воспроизвести видеоданные, как если бы это был поток.

У меня есть QTCaptureMovieFileOutput, и я передаю nil в качестве URL-адреса файла, чтобы он фактически не записывал данные в файл (меня интересуют только данные, содержащиеся в QTSampleBuffer, которые доступны через обратный вызов делегата).

Я установил объект QTCompressionOptions на выходе, определяющий сжатие H264 Video и High Quality AAC Audio.

Каждый раз, когда я получаю обратный вызов, я добавляю данные из буфера выборки в объект NSMutableData, который у меня есть как переменная экземпляра.

Моя проблема заключается в том, что ни один объект «проигрыватель» в структуре QTKit не способен воспроизводить «поток» видеоданных. Я прав в этом предположении?

Я попытался создать объект QTMovie (для воспроизведения в QTMovieView), используя переменную экземпляра данных, но получаю сообщение об ошибке, что данные не являются фильмом.

Я подхожу к этому вопросу с неправильной точки зрения?

Раньше я использовал QTCapturePreviewOutput, который передает CVImageBufferRefs для каждого видеокадра. Я преобразовывал эти кадры в NSImages для отображения в представлении.
Хотя это создавало впечатление потоковой передачи, оно было медленным и требовательным к процессору.

Как другие люди справились с проблемой потокового видео?


person Jasarien    schedule 04.10.2010    source источник


Ответы (1)


Мне кажется, что вам нужно создать текстуру GL, а затем загружать в нее данные для каждого кадра. Насколько я могу судить, все в QTMovie основано на уже существующих файлах.

person buildsucceeded    schedule 03.09.2011