QTKit: аналог для VideoContext для звука - PullRequest
1 голос
/ 13 мая 2011

Я пишу простое приложение для потоковой передачи видео по сети, используя немного отличающийся от обычного подхода "H.264 over RTP" (я использую свои собственные кодеки).

Чтобы достичь этого,мне нужны необработанные кадры и необработанные аудиосэмплы, которые QTMovie при воспроизведении фильма неявно отправляет в QTMovieView.

Самый распространенный способ получения необработанных видеокадров - это использование VisualContext, а затем обратный вызов по отображаемой ссылке.я "генерирую" CVPixelBufferRef, используя этот VisualContext.Так что я получаю кадры с некоторой частотой, которая синхронизируется с моей текущей частотой обновления (не то, что мне нужна эта синхронизация - мне нужен только «поток» кадров, который я могу передавать по сети - но Руководство по программированию CoreVideo и большинство Appleпримеры, связанные с видео, продвигают этот подход).

Первая проблема, с которой я столкнулся - это когда я присоединяю VisualContext к QTMovie, изображение больше не может быть отображено в QTMovieView.Я не знаю, почему это происходит (я думаю, это связано с идеей GWorld и рендерингом, который «отсоединяется» от него, когда я присоединяю VisualContext).Хорошо, по крайней мере, у меня есть кадры, которые я мог бы визуализировать на простом NSView (хотя это звучит неправильно и плохо для производительности. Я делаю это правильно?)

Как насчет звука, я понятия не имею, чтосделать.Мне нужно получить необработанные образцы звука во время воспроизведения фильма (в идеале - что-то похожее на то, что QTCaptureDecompressedAudioOutput возвращает в своем обратном вызове).Я подготовился к углублению в устаревшие API-интерфейсы Carbon QuickTime, если нет другого пути.Но я даже не знаю, с чего начать.Должен ли я использовать ту же ссылку CoreVideo Display и периодически каким-то образом извлекать звук?Должен ли я получить QTDataReference и найти звуковые кадры вручную?

Я на самом деле новичок в программировании видео и аудио услуг.Если бы вы могли поделиться своим опытом, я бы очень оценил любую идею, которой вы могли бы поделиться со мной:)

Спасибо, Джеймс

...