Посоветуйте хорошую либу для MPEG4/H.264 Encode/Decode

Тема в разделе "LANGS.C", создана пользователем _DEN_, 3 фев 2009.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Посоветуйте хорошую либу, можно платную - цена не имеет значения.

    Задача в следующем.

    Есть последовательность RGB (YUV) кадров. Нужно преобразовывать это дело по ходу поступления в MPEG4 либо H.264 (надо и то и то). Только Memory -> Memory, без впутывания дисков, сети и всего остального, не имеющего к преобразованию форматов прямого отношения. Ну и точно также нужно решать обратную задачу.

    В идеале это было бы нечто вроде этого:

    Код (Text):
    1. encoder enc(encoder::mpeg4, &callback);
    2.  
    3. enc.accept(rgb);
    4. enc.accept(rgb); // Ну и с каждым кадром он там сам у себя решает, не пора ли в callback отдать пакет данных
    5. enc.accept(rgb);
    Попрошу сразу не предлагать опенсорсный GNU-шный кал (а также остальной опенсорсный сугубо линуксовый/юниксовый кал). Ну или хотя бы предлагать его в самую последнюю очередь, поскольку время отвязки от никсов и портирования любой GNU-шной либы под pure C++ обычно равно написанию этой либы с нуля самостоятельно. У меня этого времени нет, мне нужно готовое решение.

    Да, сразу же прошу не тратить время в этом топике на остаивание чести GNU - если кто-то считает что GNU пишет качественный код, то этот кто-то уж точно ничего дельного посоветовать мне не сможет. Если даже официальной JPEG Group при написании libjpeg не хватило мозгов понять, что jpeg-и могут не только на винт записываться, но еще и по сети отправляться, то что уж говорить о более сложных вещах.

    Итак, есть ли в природе хорошие библиотеки для работы с видео?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    DirectShow ^)
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Он умеет энкодить? RGB -> MPEG4 ?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Конечно. Он всё умеет. ^)
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    У него "с собой" есть mpeg4/h.264? Или надо кодеки ставить?
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Стандартных не густо.
    Обычно бесплатные, только для проигрывания (те что например с K-Light Codek Pack). Для более сложных вещей как правило платно. Вообще твой входной фильтр, который будет передавать RGB, можно и самому написать, так как не сложно. А вот для записи, в K-Light например, нету mpeg4 микшера, хотя сам кодировщик есть.
     
  7. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    ffmpeg?

    [исправлено]
    упс не дочитал про gnu. Тогда действительно купи любой набор кодеков directshow (elecard) например.
     
  8. Dr0ne

    Dr0ne New Member

    Публикаций:
    0
    Регистрация:
    22 фев 2009
    Сообщения:
    4
    Позволю себе однако отметить что GPLный x264 (http://x264.org) - один из лучших в мире H.264 энкодеров, легко уделывающий многие коммерческие образцы по главному для кодека соотношению - битрейт/качество.Ну а то что вы наверное не сможете поюзать его в коммерческой поделке - вам же хуже.Платите за коммерческие поделия которые по факту ничем не лучше а то и хуже.Так вам и надо.

    Чисто технически - есть под кучу разных платформ включая винды, тот же VLC оным пользуется например.

    И если что - гуру по видеосжатию на compression.ru его сравнивали с остальными и собственно результаты весьма даже ничего так.

    Вообще, именно в области видеосжатия довольно много гуру работает над проектами с открытыми исходниками и заявы про GNU выдают не особо компетентного в вопросе человека.Команды делающие ffmpeg, x264, xvid и подобные - одни из наиболее компетентных в своем деле.Во всяком случае результаты собственно сравнений кодеков об этом говорят без лишних слов.Тот же xvid спокойно соревнуется с платным divx.А x264 обходит многие коммерческие кодеки.Так что в защите чести оно, имхо не нуждается.А вот когда всякие ... обсирают весьма качественные проекты - это неприятно.
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Dr0ne

    Ай-ай-ай, какой сердитый. Сдается мне, что нужно объясниться.

    К сожалению, мало кто понимает одну простую вещь - для того, чтобы написать хорошую библиотеку, реализующую фреймворк для работы с некоторой предметной областью (в нашем случае - видеокомпрессия), не достаточно просто быть гуру в этой предметной области. Многие забывают о том, что помимо всего прочего, еще нужно быть хорошим программистом и хорошим архитектором, выполнить правильную классификацию и декомпозицию сущностей и понятий предметной области, правильно разделить данные и алгоритмы по их абработке, правильно выявить функциональные сущности и разделить между ними сферы ответственности, и делегировать полномочия от более абстрактных к более конкретным этажам композиции понятий, и, наконец, качественно реализовать полученное решение посредством языка программирования, с учетом его грамматических и семантических особенностей и существующих (наиболее подходящих!) паттернов программирования и проектирования. Только в этом случае полученная библиотека будет наиболее проста в адаптации под конкретные условия, наиболее универсальна в использоваии, и, наконец, наиболее дешева с точки зрения интеграции в существующий проект.

    К сожалению, мало кто отдает себе отчет в том, что программирование и проектирование как предметная область зачастую является гораздо более сложной, чем сама предметная область, реализуемая в библиотеке. Именно поэтому 99% всех исходников, в том числе все библиотеки GNU - блевотное г-авно, мерзкие помои, вылитые в Интернет. Потому что их авторы не знают и не понимают самых основ, самых элементарных принципов и критериев качества исходного кода программы. Я могу взять любой гнушный исходник и показать ошибки практически в каждой(!!!) строке, объяснить на каждой их них, какие последствия она влечет и какие подводные камни скрывает.

    Гуру с compression.ru они конечно гуру, но только гуру в своей предметной области, которая к программированию никакого отношения не имеет. Что мы, собственно и видим в их библиотеках.