Landscape of Open Source Databases

Ein Vortrag von Lorna Mitchell auf dem emf2022 Kongress über die aktuelle Landschaft der der Opensource Datenbanken. Eine rassante und guter Einblick was es alles gibt und welche Funktionalitäten die einzelnen Datenbanken besonders macht.

Every year we collect more data than before, and the tools we use to manage that data are evolving to accommodate our changing needs – but it can be difficult to keep up with all the innovations! This session will give you a tour of what’s happening in open source databases, from someone who lives the adventures of open source data in her day job. You will travel from the well-trodden paths of relational databases, through the leafy glades of time series, to the landmarks of search and document databases. This session is recommended for people with an interest in software who want to learn about the overall trends, license changes, rising stars, and which database technologies are here to stay.

Video https://media.ccc.de/v/emf2022-325-landscape-of-open-source-databases

Youtube RSS Feeds Kanal und Playlisten

Wer viele Nachrichten und Informationsquellen hat, verliert schnell mal die Übersicht. Da hilft das uralte Konzept der RSS Feeds sehr elegant weiter. Nur weil es alt ist, kann es auch gut sein.

Kanal RSS Feed

Der Kanal RSS Feed ist schnell mit jedem einfachen RSS Feed Addon von Firefox gefunden.

Von meinem Kanal muss nur die Kanal ID oder „channel_id“ gefunden werden, die meist in der URL Leiste steht. Und wenn sie da nicht zu finden ist, dann einfach den Quellcode der Webseite öffnen – bei Firefox einfach Strg+U drücken und mit Str+F nach dem folgenden Text suchen „https://www.youtube.com/feeds/videos.xml?channel_id=„, dann wird automatisch zur richtigen Stelle gesprungen, wo dann auch die gesamte URL steht, wie z.B, diese hier

https://www.youtube.com/feeds/videos.xml?channel_id=UCCQ0claPBEXXt4YP36ewKSQ

Playlist RSS Feed

Bei der Playlist ist es aktuell noch einfacher, die RSS Adresse herauszufinden.
Dazu wird einfach die Playliste aufgerufen und dann steht in der URL Leiste ungefähr so etwas

https://www.youtube.com/playlist?list=PLdIGJzeTcaAcGtRMOStGpGQXGe063oZab

Die Zeichenfolge nach list= ist dabei wichtig.

Jetzt muss nur noch https://www.youtube.com/feeds/videos.xml?channel_id= in https://www.youtube.com/feeds/videos.xml?playlist_id= umgewandelt und die „list=“ ID dran gehängt werden und schon ist der RSS Feed zusammengebaut.
Der sieht dann in diesem Fall so aus

https://www.youtube.com/feeds/videos.xml?playlist_id=PLdIGJzeTcaAcGtRMOStGpGQXGe063oZab

Viel Spaß mit mit euren Nachrichtenquellen und dem RSS Reader!

Audio in Video normalisieren mit ffmpeg

Manchmal ist das Audio in einem Video relativ leise und eigentlich ist da noch richtig Luft nach oben es lauter zu machen. Ein schöner und sehr eleganter Weg ist es mit ffmpeg die Normalisierungsfunktion zu nutzen, ohne das Video selbst erneut zu encoden. Das Audio muss natürlich neu encoded werden.

Zuerst muss ermittelt werden welches der lauteste Peak (lauteste Stelle) im gesamten Audio ist

Lautstärkenermittlung – Highest Peak

ffmpeg -i Videodatei.mp4 -af "volumedetect" -vn -sn -dn -f null /dev/null

Dann steht in der Ausgabe irgendwo relativ weit oben so etwas:

[Parsed_volumedetect_0 @ 0x00000000000] mean_volume: -29.1 dB
[Parsed_volumedetect_0 @ 0x00000000000] max_volume: -3.6 dB

Das „max_volume mit -3.6 dB“ ist das Interessante für uns. Das maximale Level in der digitalen Welt ist 0dB . Alles was darüber „gedrückt“ wird, wird sehr hässlich verzerrt. Das sollte unbedingt vermieden werden!!

Lautstärkenlimit beachten!

Und vielleicht ein kleiner Sicherheitsabstand wäre auch noch ganz gut, denn beim Umwandeln über D/A (Digital/Analog) Wandler passieren auch je nach Qualität manchmal merkwürdige Dinge. Stichwort Truepeak bzw True Inter-Sample Peak Level.
Also als Empfehlung wäre hier einen Puffer von 0,5 dB bis 1 dB einzuhalten.

In unserem Beispiel von „max_volume mit -3.6 dB“ nehmen wir mal einen Puffer von 1 dB, das würde dann heissen, dass wir das max_volume um 2.6dB erhöhen: -3.6+2.6= -1dB Ziellautstärke

Lautstärkenanhebung

Der Befehl dazu lautet (Ziel Audioformat: AAC)
ffmpeg -i Videodatei.mp4 -af "volume=2.6dB" -c:v copy -c:a aac -b:a 192k VideodateiErgebnis.mp4

Alias und Function

Und in der Shell Bash ist das natürlich schöner mit einem kurzen Alias aufzurufen. Aber ein Alias ist nur ein anderer Name für ein bestehender Name. Also könnte ich dem Programm Ulrike den Namen Peter geben und egal, welchen Namen ich jetzt eingebe Ulrike oder Peter, das selbe Programm wird ausgeführt.

Da sich hier aber Aufrufparameter, wie Videodatei und die 2.6dB handelt, reicht ein Alias nicht. Dafür gibt es in der Bash die Function. Hier können dann auch die Aufrufparameter abgefragt werden.

Diese Functions weiter unten gelten immer nur für die aktuelle Session. Sobald das Fenster geschlossen oder die Bash beendet wird, ist auch die Function gelöscht. Soll die Function für immer bleiben, muss sie in der Datei .~bashrc im eigenen Homeverzeichnis definiert werden.

Lautstärke herausfinden

Der Aufruf sieht so aus myMaxvol Videodatei.mp4

myMaxvol() { ffmpeg -i "$1" -af "volumedetect" -vn -sn -dn -f null /dev/null; }

Lautstärke anheben

Der Aufruf sieht so aus: myGainvol Videodatei.mp4 2.6

myGainvol() { ffmpeg -i "$1" -af "volume=""$2""dB" -c:v copy -c:a aac -b:a 192k output.mp4 && mv output.mp4 "$1" ; }

Erklärung was hier passiert: Es wird als Parameter Videodatei.mp4 und 2.6 als Lautstärkenanhebung mitgegeben. Das Ergebnis wird in eine Datei namens output.mp4 geschrieben. Wenn die Lautstärkenanhebung erfolgreich war, dann wird die Datei output.mp4 umbenannt in die Videodatei.mp4, die damit natürlich überschrieben wird.

Wenn die Aktion schief läuft, dann liegt da eine Datei output.mp4 herum und noch die originale Datei Videodatei.mp4.

Bash Script

Vielleicht bastle ich noch ein kleine Bash Script, das automatisch die Lautstärke ermittelt, dann auch automatisch die Anhebung ermittelt und danach gleich die Lautstärkenanhebung durchführt. Und dann das ganze noch auf ein ganzes Verzeichnis anwendet.

Schaumermal.

Audiospuren aus Videodateien entfernen und hinzufügen – ffmpeg

Ich stand vor dem Problem, eine bearbeitete Audiodatei mit der ursprünglichen Audiospur einer Videodatei (mp4) auszutauschen. Da ich nur die Audiodatei verändert hatte, wollte ich nicht das Video neu kodieren und so Gefahr laufen, die Qualität zu verändern, oder unnötig die Videodatei zu vergrößern.

Im Prinzip ist es ganz einfach (unter Linux): ffmpeg

Was ist drin

Um den Inhalt einer Videodatei zu verändern, sollte erst geschaut werden, was da überhaupt drin ist. Das erledigt der Befehl:

ffprobe INPUTVIDEO.mp4

ffprobe ist ein Analyseproramm und bei ffmpeg standardmäßig mit dabei.

Entfernen

Das Entfernen einer oder mehrerer Audiospuren funktioniert mit folgendem Befehl

ffmpeg -i InputVideo.mp4 -map 0 -map -0:a:0 -codec copy OutputVideo_EINS.mp4
  • -map 0 wählt alle (Video/Audio) Spuren aus
  • -0:a:0 wählt aus allen Spuren die Audiospur Nummer 1 (Zählweise ab 0) aus
  • -codec copy definiert, dass keine Neukodierung stattfindet

Will man alle Audiospuren aus dem Video entfernen, so gilt abgekürzt

  • -0:a wählt alle Audiospuren aus

Zur Auswahl stehen nicht nur a (Audiospuren), sondern auch v (Videospuren), s (Sub-/Untertitel), d (Datenspuren).

Hinzufügen

Das Hinzufügen einer oder mehrerer Audiospuren (zum vorherigen Beispiel) funktioniert mit folgendem Befehl

ffmpeg -i OutputVideo_EINS.mp4 -i Audiospur.m4a -codec copy -shortest OutputVideo_ZWEI.mp4
  • -i steuert, was in die Datei aufgenommen werden soll. Hier 1 Video- und 1 Audiospur
  • -codec copy definiert, dass keine Neukodierung stattfindet
  • -shortest kürzt alles auf die Länge der Datei mit der kürzesten Dauer

Zweite Spur hinzufügen

Wenn eine zweite Spur hinzugefügt werden muss, dann sollte darauf geachtet werden, dass die zweite Spur genau gleich lang ist, wie die erste Spur!

ffmpeg -i INPUTVIDEO.mp4 -i INPUTAUDIO.aac -map 0 -map 1 -metadata:s:a:1 title="MEIN TITEL DER AUDIOSPUR" -codec copy OUTPUTVIDEO.mp4

Extrahieren

Das Extrahieren einer Audiospur im Originalformat funktioniert folgendermaßen

ffprobe Name_der_Video_Datei

Als Ausgabe erhält man eine lange Ausgabe und zum Schluss findet man so etwas in dieser Art

Input #0, matroska,webm, from 'MeinVideo.webm':
Metadata:
ENCODER : Lavf58.20.100
Duration: 03:59:10.04, start: -0.007000, bitrate: 2285 kb/s
Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 3840x2160, SAR 1:1 DAR 16:9, 59.94 fps, 59.94 tbr, 1k tbn, 1k tbc (default)
Metadata:
DURATION : 03:59:10.019000000
Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Metadata:
DURATION : 03:59:10.041000000

In diesem Falle handelt es sich bei Stream #0:1 Audio: opus um ein Ogg Vorbis Audio, das man in ein .ogg oder .oga abspeichern kann mit folgendem Befehl

ffmpeg -i MeinVideo.webm -map 0:a:0 -c copy MeinAudio.oga

In diesem Fall wird einfach die Audiodatei ohne ein neues konvertieren aus der Videodatei herauskopiert und liegt dann als MeinAudio.oga im Dateisystem.

Extrahieren und Konvertieren

Das Extrahieren und Konvertieren einer Audiospur in ein anderes Audioformat z.B. WAV geht sogar noch einfacher

ffmpeg -i MeinVideo.webm MeinAudio.wav

Bei komprimierten Audioformaten müssen natürlich noch ein paar mehr Parameter zur Steuerung der Qualität angegeben werden.