Как кодировать пиксели из буфера в h.264 или VP8 - PullRequest
0 голосов
/ 11 марта 2011

У меня есть приложение (qt c ++), которое считывает данные с USB-устройства, декодирует эти данные в 24-битные пиксели RGB, которые хранятся в массиве uchar.

Частота кадров составляет ~ 10 кадров в секунду. Размер кадра 128х4096.

Вопрос: как кодировать эти кадры в видео VP8 или h.264 в режиме реального времени?

Внешние процессы запрещены, все должно выполняться внутри моего приложения.

ffmpeg - вариант, но как включить его в мой проект и использовать? Документация довольно плоха, мягко говоря. Также x264 может быть вариантом, но такой же вопрос, как и для ffmpeg. И это также довольно дорого, 1 $ за единицу и минимум 10000.

Простое руководство было бы полезно, но я сомневаюсь, что оно существует.

Приложение должно работать в Windows и Linux.

Ответы [ 2 ]

0 голосов
/ 08 октября 2012

Проблема с VP8 SDK заключается в том, что примеры кодируются только в IVF. Этот кодек, по-видимому, был закрыт Microsoft из-за недостатка безопасности (переполнение буфера). Довольно сложно даже настроить проект VP8, когда вы даже не можете проверить результаты. По крайней мере, он использует лицензионную схему BSD и предположительно не обременен патентами. В VP8 SDK есть несколько процедур для преобразования форматов, но они скрыты в дереве исходных текстов.

Не упоминается опция Intel Media SDK, но она блокирует вас для окон.

Есть также Теора и Дирак.

X264 имеет кодировщик, но было бы дорого получить коммерческую лицензию. Исходный код GPLv2 не является «бесплатным». Мне все равно, что они пытаются заставить вас поверить. Есть также проект под названием «Revel - Really Easy Video Encoding Library». Это путь к получению кодированных файлов MPEG-4 part 2. H264 - это MPEG-4 часть 10. H264 также называется AVC. Ревель также под GPL'd.

Ffmpeg - это утилита catch all, которая пытается создать оболочку для различных кодеров / декодеров. Если вы используете с ним кодер x264, он становится GPLv2.

0 голосов
/ 11 марта 2011

VP8 SDK имеет документацию и даже некоторый пример кода

...