Шукати в цьому блозі

четвер, 5 листопада 2009 р.

Мои изыскания по конвертированию avi в mp4 для проигрывания фильма на HTC Android G1 (гуглофоне)

Сразуже скажу, что в своей "борьбе" я руководствовался прочтением следующих материалов. Правда не все сразу они были найдены, а следовательно, будь по другому, я возможно намного раньше получил бы необходимые мне результаты.
Сначала я хотел конвертировать через ffmpeg и заморачиваться с его сборкой, но менкодер показался как-то ближе и привычней, как, собственно, и м-плеер в состав которого он входит. Но!...

И вот тут начинается самое интересное.
Можно добавить:
deb http://www.debian-multimedia.org squeeze main
и установить пакеты mplayer и mencoder, а можно собрать всё самому и попробовать установить. Чем я руководствовался когда начал сборку пакета mplayer с поддержкой кодеков h264 и xvid? Ну... Во-первых я как-то не сразу сообразил, что mencoder, в дебиановском "стандартном" и мультимедийном репозитории, не входит в состав mplayer'а. Во-вторых, ffmpeg, даже будучи установленным из мультимедийного репозитория, поддержку h264 не осуществлял. Конечно-же можно попробовать установить mencoder и попытаться осуществить конвертацию им, но... как-то лениво, ибо уже был собрат собственный mplayer_1.0svn_i386.deb, с поддержкой h264 и xvid, процессом создания которого я и собираюсь тут поделиться.
Тут я буду рассказывать всё "гладко" и, по мере возможности, последовательно хотя, поверьте, все эти ступени и шаги по ним, разбирательства с ними, заняло куда больше времени чем я тут об этом собираюсь рассказать.
Чтобы упростить себе жизнь, всё-таки внесём, для начала, вышеуказанный источник в репозиторий. Обновим свою систему as is и двинемся дальше.
Для нормальной сборки поддерджки в менкодере кодека h264 необходимо наличие в системе пакетов libfaac0 и libfaad0, плюс dev'ы libfaac-dev и libfaad-dev. Ставим их.
Затем собираем библиотеки и пакеты для поддержки h264 и xvid.
$ wget http://downloads.xvid.org/downloads/xvidcore-1.2.1.tar.gz
$ tar xzpf xvidcore-1.2.1.tar.gz
$ cd xvidcore
$ dpkg-buildpackage
$ cd ..
$ sudo dpkg -i ./libxvidcore4_1.2.1-1_i386.deb  ./libxvidcore4-dev_1.2.1-1_i386.deb
Собственно пакет поддержки xvid у нас уже есть и установлен. В дальнейшем можно будет просто устанавливать собранный deb.
Поехали дальше.
$ git clone git://git.videolan.org/x264.git
$ cd x264
$ ./configure && make && sudo make install sudo make install
$ cd ..
Ну вот, у нас есть поддержка h264. Для тех кто в бронепоезде и всё ещё не знает что такое git - просто установите пакет git-core.
Теперь перейдём к сборке. Сайт проекта www.mplayerhq.hu. На мой взгляд он нисколько не изменился с 90-х. А вот сам новый mplayer удивил. Последний раз, когда я его собирал руками, в нём не было поддержки сборки через dpkg-buildpackage - теперь есть. И это приятно. Далее всё очень просто:
$ svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
$ cd mplayer
$ DEB_BUILD_OPTIONS="--enable-gui --win32codecsdir=/usr/local/lib/codecs --enable-menu --enable-linux-devfs --enable-dynamic-plugins --codecsdir=/usr/local/lib/codecs" dpkg-buildpackage
Опции для configure передаются через переменную DEB_BUILD_OPTIONS. "Форточные" кодеки у меня лежат в /usr/local/lib/codecs, качаются так-же с сайта проекта. Внимательно следим чтобы была поддержка faac ибо... После успешной сборки у нас появляется mplayer_1.0svn_i386.deb который мы и устанавливаем через dpkg.
Естественно если нам нужно чтобы mplayer поддерживал что-то ещё, то ставим соответствующие lib'ы и dev'ы к ним, чтобы на этапе конфигурации они смогли быть найдены.
На этом этап сборки можно считать законченным.

Теперь о конвертировании. Как и было указано в ссылках выше, вызываем менкодер следующим образом:
$ mencoder исходное_имя_файл.avi -o имя_файла_назначения.mp4 \
-vf dsize=480:352:2,scale=-8:-8,harddup \
-oac faac \
-faacopts mpeg=4:object=2:raw:br=128 \
-of lavf \
-lavfopts format=mp4 \
-ovc x264 \
-sws 9 \
-x264encopts nocabac:level_idc=30:bframes=0:bitrate=512:threads=auto:turbo=1:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh

Запускаем и ждём результата. Закачиваем на наш любимый гуглофон. Пытаемся смотреть видео :)

ps: Собственно на данном этапе видео у меня как раз таки конвертируется, так что о 100% положительном результате сказать не могу. Могу лишь сказать, что оно таки начало конвертироваться, в отличии от вчерашнего дня ;) Об окончательных результатах "борьбы" сообщу дополнительно, убрав этот ps. ;)

ps2: Печально... Очень печально... Хоть и конвертанулось видео... Хоть я его нормально посмотрел на компе плеером... А вот гуглофон выдал только тихий-тихий звук, но совершенно без видео. Что-ж, буду копать дальше. Ожидайте продолжение серии статей по изысканиям ;)

Немає коментарів: