Извлечение изображения из образца данных H.264 (Objective-C / Mac OS X) - PullRequest
2 голосов
/ 08 октября 2010

Учитывая пример буфера H.264, есть ли способ извлечь кадр, который он представляет как изображение?

Я использую QTKit для захвата видео с камеры и использую QTCaptureMovieFileOutput какобъект вывода.

Я хочу что-то похожее на CVImageBufferRef, которое передается в качестве параметра в метод делегата QTCaptureVideoPreviewOutput.По какой-то причине выходной файл не содержит CVImageBufferRef.

Что я получаю, так это QTSampleBuffer, который, поскольку я установил его в параметрах сжатия, содержит образец H.264.

Я видел, что на iPhone CoreMedia и AVFoundation можно использовать для создания CVImageBufferRef из заданного CMSampleBufferRef (который, я думаю, настолько близок к QTSampleBuffer, насколько я смогучтобы получить) - но это Mac, а не iPhone.

Ни CoreMedia, ни AVFoundation не находятся на Mac, и я не вижу способа выполнить ту же задачу.

ЧтоМне нужно это изображение (будь то CVImageBufferRef, CIImage или NSImage не имеет значения) из текущего кадра образца H.264, которое дается мне обратным вызовом объекта Output.


Расширенная информация (из комментариев ниже)

Я опубликовал связанный вопрос, посвященный исходной проблеме - попытка просто воспроизвести поток видео-сэмплов с использованием QTKit: Воспроизведениепоток видеоданных с использованием QTKна Mac OS X

Это кажется невозможным, поэтому я перешел к попытке получить кадры в виде изображений и создать видимость видео путем масштабирования, сжатия и преобразования данных изображения.от CVImageBufferRef до NSImage и отправки его одноранговому узлу по сети.

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

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

1 Ответ

0 голосов
/ 11 октября 2010

Не работает ли в этом случае раздел Создание приложения захвата одного кадра в Руководстве по программированию приложений QTKit?

...