Посоветуйте хорошую либу, можно платную - цена не имеет значения. Задача в следующем. Есть последовательность RGB (YUV) кадров. Нужно преобразовывать это дело по ходу поступления в MPEG4 либо H.264 (надо и то и то). Только Memory -> Memory, без впутывания дисков, сети и всего остального, не имеющего к преобразованию форматов прямого отношения. Ну и точно также нужно решать обратную задачу. В идеале это было бы нечто вроде этого: Код (Text): encoder enc(encoder::mpeg4, &callback); enc.accept(rgb); enc.accept(rgb); // Ну и с каждым кадром он там сам у себя решает, не пора ли в callback отдать пакет данных enc.accept(rgb); Попрошу сразу не предлагать опенсорсный GNU-шный кал (а также остальной опенсорсный сугубо линуксовый/юниксовый кал). Ну или хотя бы предлагать его в самую последнюю очередь, поскольку время отвязки от никсов и портирования любой GNU-шной либы под pure C++ обычно равно написанию этой либы с нуля самостоятельно. У меня этого времени нет, мне нужно готовое решение. Да, сразу же прошу не тратить время в этом топике на остаивание чести GNU - если кто-то считает что GNU пишет качественный код, то этот кто-то уж точно ничего дельного посоветовать мне не сможет. Если даже официальной JPEG Group при написании libjpeg не хватило мозгов понять, что jpeg-и могут не только на винт записываться, но еще и по сети отправляться, то что уж говорить о более сложных вещах. Итак, есть ли в природе хорошие библиотеки для работы с видео?
_DEN_ Стандартных не густо. Обычно бесплатные, только для проигрывания (те что например с K-Light Codek Pack). Для более сложных вещей как правило платно. Вообще твой входной фильтр, который будет передавать RGB, можно и самому написать, так как не сложно. А вот для записи, в K-Light например, нету mpeg4 микшера, хотя сам кодировщик есть.
ffmpeg? [исправлено] упс не дочитал про gnu. Тогда действительно купи любой набор кодеков directshow (elecard) например.
Позволю себе однако отметить что GPLный x264 (http://x264.org) - один из лучших в мире H.264 энкодеров, легко уделывающий многие коммерческие образцы по главному для кодека соотношению - битрейт/качество.Ну а то что вы наверное не сможете поюзать его в коммерческой поделке - вам же хуже.Платите за коммерческие поделия которые по факту ничем не лучше а то и хуже.Так вам и надо. Чисто технически - есть под кучу разных платформ включая винды, тот же VLC оным пользуется например. И если что - гуру по видеосжатию на compression.ru его сравнивали с остальными и собственно результаты весьма даже ничего так. Вообще, именно в области видеосжатия довольно много гуру работает над проектами с открытыми исходниками и заявы про GNU выдают не особо компетентного в вопросе человека.Команды делающие ffmpeg, x264, xvid и подобные - одни из наиболее компетентных в своем деле.Во всяком случае результаты собственно сравнений кодеков об этом говорят без лишних слов.Тот же xvid спокойно соревнуется с платным divx.А x264 обходит многие коммерческие кодеки.Так что в защите чести оно, имхо не нуждается.А вот когда всякие ... обсирают весьма качественные проекты - это неприятно.
Dr0ne Ай-ай-ай, какой сердитый. Сдается мне, что нужно объясниться. К сожалению, мало кто понимает одну простую вещь - для того, чтобы написать хорошую библиотеку, реализующую фреймворк для работы с некоторой предметной областью (в нашем случае - видеокомпрессия), не достаточно просто быть гуру в этой предметной области. Многие забывают о том, что помимо всего прочего, еще нужно быть хорошим программистом и хорошим архитектором, выполнить правильную классификацию и декомпозицию сущностей и понятий предметной области, правильно разделить данные и алгоритмы по их абработке, правильно выявить функциональные сущности и разделить между ними сферы ответственности, и делегировать полномочия от более абстрактных к более конкретным этажам композиции понятий, и, наконец, качественно реализовать полученное решение посредством языка программирования, с учетом его грамматических и семантических особенностей и существующих (наиболее подходящих!) паттернов программирования и проектирования. Только в этом случае полученная библиотека будет наиболее проста в адаптации под конкретные условия, наиболее универсальна в использоваии, и, наконец, наиболее дешева с точки зрения интеграции в существующий проект. К сожалению, мало кто отдает себе отчет в том, что программирование и проектирование как предметная область зачастую является гораздо более сложной, чем сама предметная область, реализуемая в библиотеке. Именно поэтому 99% всех исходников, в том числе все библиотеки GNU - блевотное г-авно, мерзкие помои, вылитые в Интернет. Потому что их авторы не знают и не понимают самых основ, самых элементарных принципов и критериев качества исходного кода программы. Я могу взять любой гнушный исходник и показать ошибки практически в каждой(!!!) строке, объяснить на каждой их них, какие последствия она влечет и какие подводные камни скрывает. Гуру с compression.ru они конечно гуру, но только гуру в своей предметной области, которая к программированию никакого отношения не имеет. Что мы, собственно и видим в их библиотеках.