Linux am Dienstag: Programm für den 1.3.2022

Dieses mal in Linux am Dienstag, geht es um das, was man sonst nicht sehen kann und wie man damit seinen Matrix Mediastore aufräumt.

Linux am Dienstag: Programm für den 1.3.2022

Retrospektiv werfen wir noch einen Blick auf die Stereo-3D Technik von letzter Woche und schauen uns an, was man damit noch alles machen kann, außer Rick & Morty in 3D anzusehen 🙂

Unsere Themen ab 19 Uhr sind u.a. :

  • Bino – Aus 2D mach 3D
  • Sicherheit – Firmennetz von NVIDIA wurde Opfer des Ukrainekrieges
  • FFMPEG – Live 3D encoden
  • SNAP – Neue Sicherheitslücken in SNAP
  • MATRIX – Wie man mit ICat den Mediastore lichtet.

Wie jede Woche per Videokonferenz auf https://meet.cloud-foo.de/Linux .

Kleine Anmerkung: Die bisherigen Vorträge findet man jetzt unter https://linux-am-dienstag.de/archiv/ .

Linux – Schneller Videos schrumpfen

Wer wie ich Videos von Spielen captured und dadurch viel Rohmaterial in großen Bitraten liegen hat, braucht die Hilfe seiner Grafikkarte um dieses Rohmaterial möglichst schnell in handhabbare Größen umzuwandeln.

Moderne Video Hardware nutzen

Das Ausgangsmaterial ist mit 5 Mb/s erstellt worden, was den Kodiervorgang beim Bildschirmcapturen beschleunigt, zum Ansehen reichen aber 2 Mb/s VBR locker aus. Früher habe ich zum Recodieren meinen Achtkerner benutzt, was schon einmal 70% der Realzeit eines Videos benötigt hat.

Heute macht das die Nvidia Grafikkarte für mich und das mit meistens 10x Geschwindigkeit meines Achtkerners 🙂

Auslastung einer Nvidia GTX1050

Wie man auf dem Bild schön sehen kann, wird die Video Engine voll ausgenutzt. Das spiegelt sich dann in so einer FFMpegausgabe wieder:

Eine Ausgabe in der Bashshell von ffmpeg beim Nutzen von Nvidia GPUs

Faktor 18 – 23 wurden im Schnitt gesichtet, kommt halt auch drauf an, ob man Schwarzbilder oder Aktion kodiert. Wie ich schon bei meinem OpenShot Artikel geschrieben habe, hängt das Endergebnis auch stark von der Resthardware des PCs ab.

FFMpeg sorgt für den Hardwaresupport

Der Befehl „ffmpeg -hwaccels“ gibt einem die für FFMpeg verfügbaren HW-Encoder aus:

$ ffmpeg -hwaccels
ffmpeg version 4.1.4 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9 (GCC)

Hardware acceleration methods:
vdpau
cuda
vaapi
qsv
drm
opencl
qsv
cuvid

Auf Nvidia-Grafikkarten sieht der Befehl zum Kodieren dann so als Script aus:

#!/bin/bash

NAME=$(basename „$1“ .mp4)

ffmpeg -hwaccel cuvid -threads 8 -c:v h264_cuvid -i „$1“ -map 0:1 -map 0:0 -c:v:0 h264_nvenc -b:v:0 2000k -c:a:0 copy -f mp4 „/home/<username>/$NAME.mp4“

Damit wird eine VBR Rate von 2.000 Kb/s, der h264_cuvid Decoder für h264 Videos und der h264_nvenc Encoder für des Reencoden genutzt. Es beschleunigt den Vorgang nämlich sehr, wenn die Grafikkarte auch Dekodiert. Die Option „-hwaccel“ gibt den zu nutzenden Treiber an.

Anmerkung: Obiges Script kann nur einen Video- und einen Audiostream verarbeiten, Dual-Ton Tracks muß man selbst einbauen.

Verscripten geht immer…

Das Script nimmt als Argument ein mp4 Video, extrahiert den Dateinamen und erzeugt das Ausgabevideo im Homeverzeichnis ( passenden Benutzernamen einsetzen ). Ein „chmod 700 script“ gepaart mit einem „mv script ~/.local/bin/“ macht das ganze dann in der eigenen Shell leicht ausführbar.

Auch für nicht Nvidia-Grafikkarten gibt es verschiedene Codecs, die die Sache beschleunigen, wie man in obiger FFMpeg Ausgabe sehen kann. Allerdings sind Nvidia-Grafikkarten die schnellsten im Test vom Linux-Magazin gewesen, aus dem ich mir meinen optimierten Befehl hergeleitet habe.Das könnte sich bei der derzeitigen Dominanz von AMD natürlich bereits geändert haben.

Infos: https://www.linux-magazin.de/ausgaben/2017/11/ffmpeg-mit-gpus/

mit FFMPEG von Mono auf Stereo wandeln

„Mono“ dürfte für die Kids von heute ein Fremdwort sein, aber wer mit alten Aufnahmen zurecht kommen muß, stolpert auch heute noch darüber. An sich wärs ja nicht schlimm, weil 1 Kanal weniger Platz wegnimmt, als 2 und man ja von der Stereoumwandlung nichts weiter hat, oder doch ?

Es zeigt sich, daß Updates nicht immer alles besser machen 🙂

QMMP, der wohl beste Player für Linux, hatte vor einigen Jahren noch die Eigenschaft, bei Mono Mp3s, die eine Spur auf beiden Kanälen abzuspielen. Leider hat er das verloren, was mich jetzt dazu nötigt, doch den Unsinnsschritt  von Mono auf Stereo zu machen, wenn doch noch mal ein Mp3 mono ist.

Und so geht es das ganz einfach :

# ffmpeg -i mono.mp3 -ac 2 -c:a:0 mp3  stereo.mp3

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ‚mono.m4a‘:
  Metadata:
    compatible_brands: iso6mp41
    creation_time   : 2016-12-11 07:18:29
  Duration: 00:03:30.72, start: 0.000000, bitrate: 95 kb/s
    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 4 kb/s (default)

Output #0, mp3, to ’stereo.mp3′:
  Metadata:
    compatible_brands: iso6mp41
    TSSE            : Lavf57.41.100
    Stream #0:0(und): Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default)
      encoder         : Lavc57.48.101 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame))