“Um FFmpeg unter Debian9 mit allen Vorteilen die das Tool bietet nutzen zu können, ist die Selbsterstellung des Programms erforderlich. In diesem Tutorial beschreibe ich das kompilieren von FFmpeg. Die Notwendigen Librarys werden über die offiziellen Paketquellen hinzugefügt."

goals:

  • compile ffmpeg
  • build with HEVC and AAC support

guide:

## install _requirements
> apt -y install \
          libnuma-dev \
          build-essential \
          nasm \
          libx265-dev \
          libx264-dev \
          libfdk-aac-dev \
          libmp3lame-dev \
          libopus-dev \
          libvpx-dev \
          libass-dev \
          libvorbis-dev \
          libass-dev \
          libfreetype6-dev \
          libtheora-dev \
          libtool \
          zlib1g-dev \
          autoconf \
          automake \
          cmake \
          mercurial \
          pkg-config \
          texinfo

Als nächstes wird eine Arbeitskopie vom FFmpeg-Projekt auf die lokale Platte geklont und direkt in das geklonte Verzeichnis gewechselt

> git clone https://github.com/FFmpeg/FFmpeg.git
> cd FFmpeg/

Im Folgenden werden die für das Build erforderlichen Umgebungsvariablen gesetzt

> PATH="$HOME/bin:$PATH"
> PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"

Bevor das Programm gebaut wird, setzen wir die entsprechenden configuration-Flags

## configure make file
> ./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

Im letzten Schritt wird das Programm gebaut, installiert und in das Verzeichnis /usr/local/bin verschoben

> make
> make install
> hash -r
> cp ffmpeg /usr/local/bin

Ab jetzt ist das Proramm wie gewohnt über das Terminal auszuführen. Es können nun alle möglichen Media-Quellen in ein beliebiges Format umgewandelt werden. Als Beispiel aufgeführt wird ein x264-Video-Container in ein x265-Video-Container mit 384kbit/s aac-Audio konvertiert

> ffmpeg -i Video.mkv -c:v libx265 -preset superfast -map_chapters -1 -crf 20 -c:a libfdk_aac -b:a 384k  "Video_x265.mkv"

“Die CRF Rate bestimmt die Qualität, je niedriger die Rate, desto höher die Qualität // Das PRESET bestimmt die Geschwindigkeit, je niederiger Rate, desto höher die Qualität”

Um Batch eine ganze Serie oder Filmsammlung umzuwanden, eignet sich die Erstellung eines shell-Scripts welches den Dateinnamen einließt und als Ausgabe ein x265 anhängt. Dies kann wie wie folgt erledigt werden

#!/bin/bash
for i in *.mkv;
  do name=`echo $i | cut -d'.' -f1`;
  echo $name;
  ffmpeg -i "$i" -c:v libx265 -preset superfast -map_chapters -1 -crf 20 -c:a libfdk_aac -b:a 384k "${name}x265.mkv";
done