FFmpeg chce mieć hardy
25.09.2015 15:07
Wielu z was używa do konwersji video graficznych aplikacji itd. Dziś będzie inaczej na przykładzie ubuntu, choć w innych distrach bedzię podobnie skompilujemy najnowszą wersję FFmpeg, kodeków i wgramy napisy do video, tworząc mp4 - harda. Po co a no jak chcemy oglądać film na tv to czasem jest problem z napisami np, brakuje pewnych efektów, karaoke itd. Więc wgramy to na twardo do video i będzie hard, czyli video z wgranymi w obraz napisami z efektami i ewentualnie czcionkami.
Najpierw wgrywamy do systemu czcionki które są w napisach, zazwyczaj wystarczy kliknąć na nie dwa razy, wyświetli się program klikamy w nim zainstaluj/wgraj w zależności od KDE/Gnome/Unity, potem restart pc by przy wgrywaniu użyło naszych czcionek.
Teraz z poziomu konta roota, zaczynamy zabawę z terminalem.
Wchodzimy tutaj Możemy kliknąć download i przez centrum oprogramowania wgrać FFmpeg jak go nie mamy, choć pewnie mamy i tu pech bo download jest pod trusty.
Ale zrobimy inaczej, sami je sobie zbudujemy.
Wchodzimy tutaj i klikamy ten duży przycisk download
Odpalamy konsolę na koncie roota.
Dajemy
sudo apt-get update
Jak coś jest dajemy tak a jak nie ma nic nowego to dajemy w konsoli
sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev
Dajemy tak, czy ten y lub t klikamy by zainstalować zmiany.
mkdir ~/ffmpeg_sources
Następnie dajemy
sudo apt-get install yasm
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
cd ~/ffmpeg_sources wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar xzvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" make make install make distclean
libx264 co tu dużo mówić bez tego wiele video nie da rady przekodować, jedziemy z instalacją
sudo apt-get install libx264-dev
Następnie dajemy
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
cd ~/ffmpeg_sources wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 tar xjvf last_x264.tar.bz2 cd x264-snapshot* PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static PATH="$HOME/bin:$PATH" make make install make distclean
Yupi H.264 już mamy a teraz czas na jego młodszego brata, a nóż się przyda kiedyś.
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
sudo apt-get install cmake mercurial cd ~/ffmpeg_sources hg clone https://bitbucket.org/multicoreware/x265 cd ~/ffmpeg_sources/x265/build/linux PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source make make install make distclean
hura mamy H.265 co za szał, czyż nie, a teraz czas na aac czyli kodek dźwięku, takie lepsze mp3.
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
cd ~/ffmpeg_sources wget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/master tar xzvf fdk-aac.tar.gz cd mstorsjo-fdk-aac* autoreconf -fiv ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make distclean
A teraz nasze legendarne, wieczne i ukochane dla piratów MP3
sudo apt-get install libmp3lame-dev
I następnie:
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
sudo apt-get install nasm cd ~/ffmpeg_sources wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared make make install make distclean
Mamy MP3 jest cool, to teraz pola na kolejny kodek dźwięku.
sudo apt-get install libopus-dev
I następnie:
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
cd ~/ffmpeg_sources wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz tar xzvf opus-1.1.tar.gz cd opus-1.1 ./configure --prefix="$HOME/ffmpeg_build" --disable-shared make make install make clean
To czas na kodek VP8/9 od samego wujaszka Google.
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
cd ~/ffmpeg_sources wget http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.4.0.tar.bz2 tar xjvf libvpx-1.4.0.tar.bz2 cd libvpx-1.4.0 PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests PATH="$HOME/bin:$PATH" make make install make clean
Gotowe a teraz czas na FFmpeg, w końcu co nie;
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
cd ~/ffmpeg_sources wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 tar xjvf ffmpeg-snapshot.tar.bz2
Następnie dajemy to razem
cd ffmpeg PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/ffmpeg_build" \ --pkg-config-flags="--static" \ --extra-cflags="-I$HOME/ffmpeg_build/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib" \ --bindir="$HOME/bin" \ --enable-gpl \ --enable-libass \ --enable-libfdk-aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-nonfree PATH="$HOME/bin:$PATH" make
Każdą linię z poniższego kodu dajemy w terminalu osobno i dajemy enter, czasem jak damy na raz są problemy.
make install make distclean hash -r
Gotowe.
AKTUALIZACJA FFMPEG robić jak wyjdzie nowa wersja Update wygląda tak odinstalowujemy wszystko i wgrywamy od nowa.
rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffplay,ffserver,vsyasm,x264,x265,yasm,ytasm}
i
rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ffmpeg,ffprobe,ffplay,ffserver,vsyasm,x264,x265,yasm,ytasm} sudo apt-get autoremove autoconf automake build-essential cmake libass-dev libfreetype6-dev \ libmp3lame-dev libopus-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev \ libvorbis-dev libvpx-dev libx264-dev libxcb1-dev libxcb-shm0-dev ibxcb-xfixes0-dev mercurial texi2html zlib1g-dev sed -i '/ffmpeg_build/c\' ~/.manpath hash -r
Gotowe narzędzia mamy wgrane, wow trochę to trwało, teraz szukamy video np, video.mkv i napisy np, napisy.ass i plik wynikowy to będzie mp4.
ffmpeg -i "/home/naszanazwauzytkownika/Dokumenty/video.mkv" -sn -c:v libx264 -x264opts crf=28 -vf ass="/home/aszanazwauzytkownika/Dokumenty/napisy".ass -c:a aac -b:a 252k -strict experimental "/home/aszanazwauzytkownika/Dokumenty/hardsub".mp4
Pierwsza ścieżka to nasz katalog domowy i nazwa pliku źródłowego to video.mkv, druga ścieżka to napisy napisy.ass i pamiętamy nie dajemy tu normalnie napisy.ass bo ass mamy po " należy o tym pamiętać, na końcu mamy ścieżkę do pliku wynikowego który tworzymy, czyli hardsub nazwa pliku, rozszerzenie mp4. I to w zasadzie tyle. libx264 i x264opts to wersja kodeka H.264 można użyć H.265 wtedy dajemy zamiast libx264 libx265 a drugie zostaje bez zmian, bo nie działa, znaczy mi nie poszło xd, crf=28 to moc kompresji, czyli jakość vs rozmiar. Mnie zadowala 28 ale każdy może mieć inne zdanie w tej kwestii, a 252 to jakość aac w zupełności wystarczy. W takiej konfiguracji konwertuje nam tylko video i wgrywa do niego napisy a audio zostaje bez zmian.
Gotowe po kilku minutach/ godzinach mamy harda. Jeśli mamy problem z aac odpalamy by pobrać i wgrać kodek od nero wgranie sprowadza się do skopiowania plików z pobranego archiwum z katalogu linux do katalogu /usr/bin/ plus nadanie tym trzem plikom uprawnień do wykonywania, prawy klik myszy i na dole dajemy fajkę jest tylko jedna w uprawnieniach na dole. I tak dla 3 plików i tyle mamy kodek nero.