Archiwum → Kompilacja ffmpeg w Ubuntu 9.10
Opisywałem kiedyś konwersję plików AVI do formatu mp4, który jest standardowym formatem dla iPoda. Kiedy parę dni temu chciałem nauczyć siostrzeńców korzystania ze skryptu na Ubuntu 9.10 okazało się, że jest problem. Nie jest on bezpośrednio związany ze skryptem, ale z faktem że dostępne w repozytorium paczki ffmpeg nie zawierają wsparcia dla x264, Xvid i AAC. Zaraz po uruchomieniu skryptu pojawiają się błędy podobne do tego pokazanego obok.
Teoretycznie w Internecie jest kilka opisów jak skompilować ffmpeg w taki sposób aby wspierały brakujące kodeki, ale żaden z opisów nie okazał się być dokładny i bez błędów (poza tym opisy są po angielsku). Nawet ten który znalazłem na Wiki Ubuntu zawierał błędy (może za jakiś czas zostanie zaktualizowany dla wersji 9.10). Dlatego pokrótce opiszę sposób, który u mnie zadziałał. Podam przy tym jaka była różnica z tym co wykonywałem, a tym co sugerowało Wiki. Być może w ten sposób ktoś trafi na moją stronę (szukając rozwiązania błędów). Opis typowo techniczny, dlatego niektórym może wydać się nudy. W przypadku jakichkolwiek problemów proszę szukać pomocy na forach internetowych (mój czas jest mocno ograniczony). Przed wykonaniem jakichkolwiek komend polecam przeczytanie wpisu do samego końca.
Ponieważ opis ten powstał w odpowiedzi na problemy z AVI2iPod, przypomnę, że plik README skryptu wyjaśnia iż należy doinstalować niektóre paczki (jak np. mplayer). Najlepiej to zrobić przed wykonaniem dalszych czynności (oczywiście pomijając ffmpeg).
Jeżeli mamy u siebie zainstalowany ffmpeg z repozytoriów, to zanim zaczniemy, najpierw musimy go usunąć. Sposoby są dwa. Poprzez Synaptic lub poprzez wykonanie komendy:
sudo apt-get remove ffmpeg
W kolejnym kroku wykonujemy komendę, która spowoduje doinstalowanie brakujących pakietów. Wiki zaleca wykonanie komendy:
sudo apt-get install libgsm1-dev libvorbis-dev libxvidcore4-dev libdc1394-dev libfaac-dev libmp3lame-dev libx264-dev libfaad-dev libtheora-dev libsdl1.2-dev
ale u mnie próba wykonania zakończyła się błędem:
E: Pakiet libdc1394-dev nie ma kandydata do instalacji
Dlatego prawidłowa komenda w Ubuntu 9.10 wygląda tak:
sudo apt-get install libgsm1-dev libvorbis-dev libxvidcore4-dev libdc1394-22-dev libfaac-dev libmp3lame-dev libx264-dev libfaad-dev libtheora-dev libsdl1.2-dev subversion
Zamiana dotyczyła jednego pakietu (nieco inna nazwa). Dodatkowo dodałem tu paczkę subversion (svn), która będzie potrzebna w następnym kroku.
Po zainstalowaniu koniecznych paczek pobieramy najnowsze pliki źródłowe ffmpeg wykonując w terminalu komendę:
svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
Po jej wykonaniu zostanie utworzony katalog ffmpeg. Przechodzimy do tego katalogu komendą:
cd ffmpeg
Następna komenda to konfiguracja. WIKI zaleca wykonanie takiej konfiguracji:
./configure --enable-gpl --enable-postproc --enable-swscale --enable-pthreads --enable-x11grab --enable-libdc1394 --enable-libfaac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
Przy takiej wersji w Ubuntu 9.10 pojawił się tu następujący problem:
libfaac is nonfree and –enable-nonfree is not specified.
Dlatego dodałem ‘--enable-nonfree‘ do wcześniejszej komendy. Poprawna komenda w Ubuntu 9.10 wygląda tak:
./configure --enable-gpl --enable-postproc --enable-nonfree --enable-swscale --enable-pthreads --enable-x11grab --enable-libdc1394 --enable-libfaac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid
Dodanie opcji rozwiązało poprzedni problem, ale jak to czasami bywa pojawił się inny:
ERROR: libx264 version must be >= 0.83
Bibliotekę libx264 miałem zainstalowaną z repozytoriów, więc nie pozostało mi nic innego jak skompilować samemu nowszą wersję. Przedtem trzeba usunąć istniejącą w systemie bibliotekę (to ważne!). Nowszą wersję znalazłem ją na stronie videolan.org. Pobieramy tam najnowszy plik tar.bz2 ( u mnie był to: x264-snapshot-20100315-2245.tar.bz2). Rozpakowujemy i instalujemy komendami:
./configure
make
sudo make install
Po zainstalowaniu możemy powrócić do instalacji ffmpeg (komenda ./configure , którą podałem wcześniej). Powinno pójść bez problemów. Jeżeli tak jest, to pozostaje nam wykonanie dwóch komend:
make
sudo make install
i ffmpeg jest zainstalowany w wersji, która bez problemu współpracuje ze skryptem avi2ipod (i nie tylko). Przynajmniej u mnie zadziałało. Oczywiście pewnie są inne sposoby na dodanie ffmpeg, więc jak koś ma uwagi, to proszę o podanie ich w komentarzu. Przydadzą się innym.
Tags: multimedia