Воспроизведение потока видеоданных с помощью QTKit на Mac OS X - PullRequest
1 голос
/ 04 октября 2010

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

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

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

Я установил на выходе объект QTCompressionOptions, указывающий сжатие видео H264 и высококачественное аудио AAC.

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

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

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

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

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

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

1 Ответ

0 голосов
/ 04 сентября 2011

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

...