Kategorien
Linux Video

.ts und .mpg Dateien zusammenfügen

Bei manchen Festplattenrecordern erscheinen aufnahmen als eine reihe von *.ts oder *.mpg Dateien an. Diese Dateien lassen sich mit jedem Videoplayer wiedergeben, wenn sie jedoch zusammengefügt werden läuft Ton und Bild langsam auseinander.

Dies wird durch die ungewöhnliche Art verursacht, in der viele Festplattenrecorder die .ts/.mpg Dateien schreiben. Häufig ist im ersten mpeg Frame keine Bildinformation sondern Zusatzinformationen des Rekorders abgelegt, die es zu entfernen gilt.:

ffmpeg -ss 00:00:00.2 \
 -i "concat:eins.tx|zwei.ts|...|letzte.ts" \
 -i "concat:eins.tx|zwei.ts|...|letzte.ts" \
 -acodec copy -vcodec copy \
 -map 0:0 \
 -map 1:1 \
 -f mpegts \
 ausgabe.ts

 ffmpeg

-ss 00:00:00.2
überspringt die ersten beiden Frames jeder Video-Datei

-i “concat:eins.ts|zwei.ts|…|letzte.ts”
nimmt die zusammengefügten Dateien eins.ts, zwei.ts und letzte.ts als Quelle 0
meint in diesem Zusammenhang nur hier belibig weitere Dateien!

-i “concat:eins.ts|zwei.ts|…|letzte.ts”
nimmt die zusammengefügten Dateien eins.ts, zwei.ts und letzte.ts als Quelle 1

-acodec copy -vcodec copy
Die Audio- und Videospur soll unverändert übernommen werden.

-map 0:0 -map 1:1
Nimmt aus der “Quelle 0” die Spur 0 (das Video) und aus der “Quelle 1” die Spur 1 (Audio)

-f mpegts
nimmt als Ausgabeformat das Format MPEG-ts

Am ende folgt die Ausgabedatei, welche Ihr Kontainerformat aus der Dateierweiterung bezieht, in unserem Fall “ausgabe.mkv”. Als Ausgabedatei kann je nach persönlichem Geschmack

Kategorien
Linux Video

Aktualisieren von FFmpeg und x264

Um ffmpeg, x264, libx264-dev und yasm zu aktualisieren, wenn diese zuvor mit diese Anleitung eingerichtet wurde müssen diese zuerst deinstalliert werden:
sudo apt-get remove yasm ffmpeg x264 libx264-dev

Jetzt ein Paket nach dem anderen bereinigen, aktualisieren und neu Übersetzen:

yasm

cd /usr/src/yasm
make distclean
git pull
./autogen.sh
./configure --disable-nls --prefix=/usr
make
sudo checkinstall --pkgname=yasm --pkgversion="$(cat YASM-VERSION-FILE)" \
--backup=no --deldoc=yes --fstrans=no --default

x264

cd /usr/src/x264
make distclean
git pull
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes --fstrans=no --default

ffmpeg

cd /usr/src/ffmpeg/
make distclean
git pull
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(./version.sh)" --backup=no --deldoc=yes --fstrans=no --default
hash x264 ffmpeg ffplay ffprobe

Sollten zweifel bestehen ob ffmpeg und x264 korrekt eingerichtet wurden, im Aufruf von x264 –version und im Aufruf von ffmpeg erscheint als “built”-Datum das aktuelle Datum.

Kategorien
Linux Video

Aktuelle FFmpeg und x264 Version Installieren

Abhängigkeiten Installieren

Entfernen der alten Installationen von x264, libx264-dev und ffmpeg.

sudo apt-get remove ffmpeg x264 libx264-dev

Alle für die übersetzung von x264 und FFmpeg notwendigen Pakete holen.

sudo apt-get update
sudo apt-get install build-essential checkinstall git libfaac-dev \
libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev \
libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev \
libvdpau-dev libvorbis-dev libx11-dev \
libxfixes-dev texi2html yasm zlib1g-dev

Der aktuelle Benutzer muss noch in die Gruppe “src” so das er in /usr/src schreiben darf:

sudo usermod -aG src $(whoami)

YASM holen und Compilieren!

cd /usr/src
git clone https://github.com/yasm/yasm.git
cd yasm
./autogen.sh
./configure --disable-nls --prefix=/usr
make
sudo checkinstall --pkgname=yasm --pkgversion="$(cat YASM-VERSION-FILE)" \
--backup=no --deldoc=yes --fstrans=no --default

x264 Installieren

Die aktuellen Sourcecodes für x264 holen und übersetzen.

cd /usr/src
git clone git://git.videolan.org/x264
cd x264
./configure --enable-static
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \
awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \
--fstrans=no --default

Install libvpx

VP8/WEBM holen und compilieren

sudo apt-get remove libvpx-dev
cd
git clone http://git.chromium.org/chromium/deps/libvpx.git
cd libvpx
./configure
make
sudo checkinstall --pkgname=libvpx --pkgversion="1:$(date +%Y%m%d%H%M)-git" \
--backup=no --deldoc=yes --fstrans=no --default

Installation von FFmpeg

Holen der aktuellsten Version, Compilieren, und Installation von FFMPEG.

cd /usr/src
git clone --depth 1 git://source.ffmpeg.org/ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-libfaac --enable-libmp3lame \
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora \
--enable-libvorbis \ --enable-libx264 --enable-nonfree --enable-postproc \
--enable-version3 --enable-x11grab --enable-libvpx
make
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(date +%Y%m%d%H%M)-git" \
--backup=no --deldoc=yes --fstrans=no --default
hash x264 ffmpeg ffplay ffprobe

lavf Support zu x264 Hinzufügen.

Der lavf-Support erlaubt x264 alle Input-Dateien anzunehmen die von FFmpeg unterstützt werden. Dies ist sehr praktisch wenn x264 direkt verwendet werden soll.

cd /usr/src/x264
make distclean
./configure --enable-static
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \
awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \
--fstrans=no --default

Hiermit ist die Installation abgeschlossen.
Du solltest die Source-Verzeichnisse von x264, libvpx, und ffmpeg behalten um Sie später einfach aktualisieren zu können. Siehe auch Aktualisieren von FFmpeg und x264 für weitere Informationen.

Um die Änderungen dieser Anleitung rückgängig zu machen und FFmpeg, x264, yasm und alle anderen Pakete aus dieser Anleitung wieder zu entfernen nutze folgendes Kommando:

sudo apt-get autoremove x264 ffmpeg qt-faststart build-essential git checkinstall \
yasm texi2html libfaac-dev libjack-jackd2-dev libmp3lame-dev libsdl1.2-dev \
libtheora-dev libva-dev libvdpau-dev libvorbis-dev libvpx libx11-dev \
libxfixes-dev zlib1g-dev

 

Kategorien
Linux Video

Shell Videomanipulation / konvertierung

Snippets zur einfachen manipulation von Videos auf der Linux-Shell.

FLV Dateien Zusammenfügen

avidemux2_cli --load in1.flv --append in2.flv \
--audio-codec COPY --video-codec COPY --output-format FLV --save out.flv

 

FLV in MKV umwandeln

ffmpeg -i in.flv -vcodec copy -acodec copy out.mkv

 

Video Dateien Zusammenfügen (variante nicht FLV)

cat in1.avi in2.avi|ffmpeg -f mpeg -i - -sameq -vcodec copy -acodec copy out.mkv

 

FLV Dateien konvertieren

avidemux2_cli --load in.flv --audio-codec aac --video-codec x264 --output-format AVI --save out.avi

 

MP3 aus Video extrahieren

ffmpeg -i in.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 out.mp3

 

Video-DVD erstellen

ffmpeg -i in.avi -aspect 4:3 -target pal-dvd dvd.vob
ffmpeg -i in.avi -aspect 16:9 -target pal-dvd dvd.vob
dvdauthor -o ZielVerzeichniss/ -t in1.vob in2.vob in3.vob
dvdauthor -T -o ZielVerzeichniss/