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