Учитывая выборку буфера H.264, есть способ извлечь кадр, который он представляет в виде изображения?Извлечение изображения из данных образца H.264 (Objective-C/Mac OS X)
Я использую 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: Playing a stream of video data using QTKit on Mac OS X
Кажется, это невозможно, поэтому я перешел на попытку получить кадры в качестве изображений и создания внешнего вида видео, масштабируя, сжимая и преобразуя данные изображения с CVImageBufferRef
в NSImage
и отправляя их равным сеть.
Я могу использовать QTCapturePreviewVideoOutput
(или распаковать), чтобы получить несжатые изображения рамки в виде CVImageBufferRef
.
Однако эти изображения ссылки нужно сжатия, масштабирования и преобразования в NSImage
с, прежде чем они любое использование для меня, следовательно, попытка получить уже масштабируется и сжатый кадр из рамок, используя QTCaptureMovieFileOutput
(что позволяет сжатие и размер изображения, который должен быть установлен до начала съемки), что избавляет меня от необходимости выполнять дорогостоящие операции сжатия, масштабирования и преобразования, которые убивают CPU.
Начиная с OS X 10.7, CoreMedia и AVFoundation доступны на Mac. –