psilogic: (Default)
psilogic ([personal profile] psilogic) wrote2010-02-16 12:37 am

libavcodec

Камрад [livejournal.com profile] ishc кинул в меня сцылкой на библиотеку преобразования форматов libavcodec. Я про нее раньше уже слышал. Вот и сам попробовал. Мне оно понадобилось для звуковых файлов.

Дальше под катом отзыв. Матерный.


На первый взбляд охуительно: куча кодеков для кучи форматов.

На второй взбляд берем их утилиту ffmpeg... работает, сцуко! И неплохо работает, по скорости сравнимо с тем, что я юзал ранее.

На третий взбляд начинаем писать что-то свое на API. И начинается пиздец.

Документация хуевая. Сгенерена автоматически. Нет никакого table of contents. Нет нормального how to. Ну, блядь, ну какого хуя нет нормального мануала для типовых действий!? Ведь этих типовых - хуй, два и обчелся: как раскодировать произвольный формат в wav, как закодировать wav в произвольный формат. Ну, может, еще сдвиг вперед-назад по потоку. Все, блядь! Ну для видео, может, таких действий наберется полдюжины.

Есть только примеры. Которые написаны хуй знает когда, хуй знает кем и предназначены... для конкретного формата в конкретный формат. И нихуя не работают ибо падают на хуй. Или не падают, но глючат. Ихний ffmpeg не падает, но нахуй мне консольная утилита для гуёвой проги? Кому надо, тот и так из консоли вызовет.



Короче, консольная утилита полезна. А вот как API - маст дай. Разве что найдется кто-то, кто в этом libavcodec-е уже собаку сожрал и поможет. Вот как я собаку сожрал на ACM, так что если у кого какие вопросы - всегда помогу.

[identity profile] psilogic.livejournal.com 2010-02-16 12:18 am (UTC)(link)
Я даже не представляю, что там есть в этом DirectShow, никогда с ним не работал. Он может преобразовать файл mp3 в файл wav и обратно?

[identity profile] arifg.livejournal.com 2010-02-16 12:28 am (UTC)(link)
DirectShow дает интерфейс для осуществления стандартных мультимедиа действий, посредством установленных в системе кодеков: демултиплексирование (разборка контейнера), декодирование, кодирование и сворачивание в контейнер. Интерфейс двустороннй, т.е. между кодеком и фреймворком, и фреймворком и пользователем. То есть, в общем смысле, ответ - да, оно дает такую возможность, но для этого нужно писать соответсвующую приладу. Вот, взгляни: http://en.wikipedia.org/wiki/DirectShow

[identity profile] psilogic.livejournal.com 2010-02-16 12:32 am (UTC)(link)
Да я уже разобрался - это тот же ACM, только обертка вокруг него. А обертку я закодю, если меня среди ночи разбудить и спросить, как устроен RIFF-файл :)

[identity profile] arifg.livejournal.com 2010-02-16 12:35 am (UTC)(link)
Ну, RIFF-ы, я так понимаю, это лишь один вид контейнеров. Там фишка в том, что оно пытается абстрагировать все, включая контейнер, кодер, декодер и прочую фигню. Несколько громоздко, но вроде работает.

[identity profile] psilogic.livejournal.com 2010-02-16 12:42 am (UTC)(link)
Для звука RIFF - основной контейнер, который может принимать разные формы, например, wav или dls. Контейнера требует только несжатый звук. MP3, MP2, OGG могут быть спрятаны в таком контейнере или идти без контейнера.

А такая фишка как ffmpeg может пригодиться, чтобы выковырять звук, скажем, из видео или какого-то формата, для которого нет кодека.

[identity profile] arifg.livejournal.com 2010-02-16 12:46 am (UTC)(link)
Ну, удачи! Отпиши потом, как и что получилось, если не лень будет.