libavcodec

Feb. 16th, 2010 12:37 am
psilogic: (Default)
[personal profile] psilogic
Камрад [livejournal.com profile] ishc кинул в меня сцылкой на библиотеку преобразования форматов libavcodec. Я про нее раньше уже слышал. Вот и сам попробовал. Мне оно понадобилось для звуковых файлов.

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


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

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

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

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

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



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

Date: 2010-02-15 09:48 pm (UTC)
From: [identity profile] morfizm.livejournal.com
Зачем вам документация и примеры?

"Use the Source, Luke!" ;)

Date: 2010-02-15 09:58 pm (UTC)
From: [identity profile] psilogic.livejournal.com
Из сорцов можно узнать о программе все, но не все - за приемлемое время.

Date: 2010-02-16 12:12 am (UTC)
From: [identity profile] morfizm.livejournal.com
Без сомнения. Правда жизни в том, что очень часто кроме sources достоверного источника нет, потому если sources лажёвые, это жопа.

Date: 2010-02-16 12:31 am (UTC)
From: [identity profile] psilogic.livejournal.com
Ну в данном случае сорцы средние. Плохо, что голый C, но хорошо, что достаточно читабельный C. В том смысле, что можно сделать гораздо хуже. :) Плохо то, что сорцы не собираются под Visual Studio, им подавай GCC. Хорошо то, что есть собранные DLL-ки, а корневой модуль я под Visual Studio за несколько часов переделал. Так что в принципе, можно сделать кодек, хотя и не runtime - как я было разинул варежку. Ну и куча мусора в таком кодеке будет.

Date: 2010-02-16 12:43 am (UTC)
From: [identity profile] morfizm.livejournal.com
А они собираются под cygwin, кстати?

Date: 2010-02-16 12:47 am (UTC)
From: [identity profile] psilogic.livejournal.com
По идее должны...

Date: 2010-02-15 11:33 pm (UTC)
From: [identity profile] arifg.livejournal.com
Ну, не знаю - я второй год под ffdshow живу, практически все фаудио-видео форматы им кодирую-декодирую и беды не знаю. Значит, что-то они под ним написали таки окромя консольной утилиты.

Date: 2010-02-15 11:51 pm (UTC)
From: [identity profile] psilogic.livejournal.com
Под ним много чего написано - вопрос, какой ценой. Я примерно знаю, как победить те траблы, которые у меня возникли. Надо взять консольную утилиту и преобразовать ее в модуль, подключаемый к моей программе, поэтапно убирая оттуда все консольное и все, связаннео с видео.

Но это, согласись, будет уже не API к библиотеке, а API к утилите :)

Date: 2010-02-15 11:56 pm (UTC)
From: [identity profile] arifg.livejournal.com
Слушай, а нафига? Возьми тот же ffdshow и гони через DirectShow, который хорошо документирован, все что тебе нужно?

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

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

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

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

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

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

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

Date: 2010-02-16 12:26 am (UTC)
From: [identity profile] psilogic.livejournal.com
Прочел вот это:

http://www.codeproject.com/KB/audio-video/dshowencoder.aspx?msg=336204

Там написано, что DirectShow использует 5 фильтров, в середине которых - любимый мной во все дыры ACM. :))

Date: 2010-02-16 12:32 am (UTC)
From: [identity profile] arifg.livejournal.com
Ну, с твоей идеосинкразией к АСМ я ничего поделать не могу :)))

Date: 2010-02-16 12:43 am (UTC)
From: [identity profile] psilogic.livejournal.com
Да я не то что бы... просто долго пришлось с ним возиться :) Много недокументированных ню... ансов :)
Page generated Aug. 14th, 2025 06:09 pm
Powered by Dreamwidth Studios