Blog (16)
Komentarze (470)
Recenzje (0)
@hyoukaFFmpeg chce mieć hardy

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.

Wybrane dla Ciebie
Komentarze (0)