Я играл с QTKit пару дней, и мне удалось успешно записать видеоданные в файл с камеры, используя QTCaptureSession
и QTCaptureDeviceInput
и т. д.
Однако я хочу отправить данные в другое место либо по сети, либо на другой объект в том же приложении (это не имеет значения), а затем воспроизвести видеоданные, как если бы это был поток.
У меня есть QTCaptureMovieFileOutput
, и я передаю nil
в качестве URL-адреса файла, чтобы он фактически не записывал данные в файл (меня интересуют только данные, содержащиеся в QTSampleBuffer
, которые доступны через обратный вызов делегата).
Я установил объект QTCompressionOptions
на выходе, определяющий сжатие H264 Video и High Quality AAC Audio.
Каждый раз, когда я получаю обратный вызов, я добавляю данные из буфера выборки в объект NSMutableData
, который у меня есть как переменная экземпляра.
Моя проблема заключается в том, что ни один объект «проигрыватель» в структуре QTKit не способен воспроизводить «поток» видеоданных. Я прав в этом предположении?
Я попытался создать объект QTMovie
(для воспроизведения в QTMovieView
), используя переменную экземпляра данных, но получаю сообщение об ошибке, что данные не являются фильмом.
Я подхожу к этому вопросу с неправильной точки зрения?
Раньше я использовал QTCapturePreviewOutput
, который передает CVImageBufferRef
s для каждого видеокадра. Я преобразовывал эти кадры в NSImages
для отображения в представлении.
Хотя это создавало впечатление потоковой передачи, оно было медленным и требовательным к процессору.
Как другие люди справились с проблемой потокового видео?