Die Leistung der Opus Komprimierung

Opus Compression

Wenn Sie generell viele Podcasts, Vorträge oder Hörbücher anhören und Sie möchten so viel davon unterwegs dabei haben wie Sie können, dann ist der Opus Audio Codec etwas was Sie interessieren könnte. Ich verwende selten diesen Begriff, aber hier kann er angewendet werden: die Ergebnisse raubten mir den Verstand. Es ist erstaunlich wieviel Audio Sie auf ein mobiles Gerät mit extremen Kapazitätsgrenzen packen können.

Ich habe gerade das:

none 162 Files mp3, 44100 Hz, mono, s16p, 129 kb/s Total Length: 6d 14h 47min 49 Total Size: 9.05 GB von 9.05 GB auf 555 MB konvertiert und bin mit den Ergebnissen zufrieden.

Bitte beachten Sie, dass es sich dabei um eine Konvertierung von mp3 als Ausgangsmaterial handelt. Ja, das ist richtig, es ging von 128k mp3 zu 6k Opus, eine Woche Audio wurde auf ein halbes Gigabyte reduziert, und es wurde dabei aus einer ungünstigen Quelle konvertiert. Obwohl dies meine persönliche Hardcore-Einstellung ist, in meinen Recherchen fand ich heraus, dass man mit 16k fast nichts falsch machen kann, egal wie schlecht die Quelle ist.

Was ist Opus?

Nach ihren eigenen Worten: > Opus ist ein völlig offener, lizenzfreier, vielseitiger Audio-Codec. Opus ist unübertroffen für interaktive Sprach- und Musikübertragung über das Internet, ist aber auch für Speicherung und Streaming-Anwendungen gedacht. Es wurde von der Internet Engineering Task Force (IETF) als RFC 6716 standardisiert, welche die Technologie des Skype SILK-Codec und Xiph.Org CELT Codecs eingebaut hat.

https://www.opus-codec.orghttps://en.wikipedia.org/wiki/Opus_%28audio_format%29

Vergleichsdiagramm zwischen MP3, AAC und Opus

LängeUnkomprimiertCodecBitrateKomprimiertFaktor
24 h14.88 GBMP3128k1382.411
24 h14.88 GBAAC HE64k691.2 MB22
24 h14.88 GBOpus16k172.8 MB86
24 h14.88 GBOpus6k64.8 MB233
7 d104 GBMP3128k9.7 GB11
7 d104 GBAAC HE64k4.8 GB22
7 d104 GBOpus16k1.2 GB86
7 d104 GBOpus6k0.5 GB233
30 d446 GBMP3128k41.5 GB11
30 d446 GBAAC HE64k20.7 GB22
30 d446 GBOpus16k5.2 GB86
30 d446 GBOpus6k1.9 GB233
365 d5.4 TBMP3128k504.6 GB11
365 d5.4 TBAAC HE64k252.3 GB22
365 d5.4 TBOpus16k63.1 GB86
365 d5.4 TBOpus6k23.6 GB233

Bitraten Rechner

Bitrate kbit/s
Länge s
Dateigröße MB

Bitte beachten Sie, dass Opus VBR verwendet (es kann auf CBR umgestellt werden, was ich aber nach Begutachtung der Ergebnisse nicht empfehle). Daher ist die endgültige Dateigröße angenähert.

Der Konvertierungs Befehl

Man kann man mit 16k fast nichts falsch machen. Nach meiner Erfahrung reslutieren sogar stark komprimierte, schlecht klingende Quellen in ähnlich guter Qualität.

bash ffmpeg -i <input.file> -acodec libopus -b:a 16k <output.opus>

Wenn die Quelldateien von höherer Qualität sind erhalten Sie immer noch beeindruckende Ergebnisse mit 6k, dies ist übrigens die absolut minimale Einstellung die Opus anbietet, aber man kann auf jeden Fall die Auswirkungen die diese massive Kompression mit sich bringt hören.

Ich persönlich verwende die 6k Bitraten Einstellung, selbst wenn die Quelle von minderer Qualität ist, weil ich mehr auf engerem Raum mit weniger Qualität, als weniger mit höherer Qualität bevorzuge. Das ist die Entscheidung die man für sich selbst machen muss.

Dies ist die Hardcore-Einstellung, die ich benutze:

bash ffmpeg -i <input.file> -acodec libopus -b:a 6k -application voip output.opus

Konvertierungsoptionen

Standardmäßig sind die Optionen für libopus solide. Für den Zweck extremer Reduktion senken wir die Bitrate. Dann optimieren wir für Spracherkennung mit der Option application für diesen speziellen Fall.

application (N.A.) Set intended application type. Valid options are listed below:

  • voip -> Favor improved speech intelligibility.
  • audio -> Favor faithfulness to the input (the default).
  • lowdelay -> Restrict to only the lowest delay modes.

Mehrere Dateien gleichzeitig bearbeiten

bash for f in *; do ffmpeg -n -i "$f" -acodec libopus -b:a 16k -application voip "encoded_"${f}".opus"; done

Dieser Befehl durchläuft alle Dateien im aktuellen Verzeichnis und wandelt sie in das Opus-Format um. Die gerenderten Dateien werden im gleichen Verzeichnis mit demselben Namen wie die Originaldateien mit vorangestelltem encoded_ gespeichert. Der Opus-Codec arbeitet nur Single Threaded.

Beschleunigung mit Multithreading

Opus bietet keine Unterstützung für Multithreading und Encodierungen werden einem einzigen CPU Kern zugeordnet, aber Sie können die Encodierung mit den folgenden Bash Befehlen parallelisieren.

bash bash -c 'ffmpeg_pids=(); for f in *; do ffmpeg -n -i "$f" -acodec libopus -b:a 16k -application voip encoded_"${f}".opus & ffmpeg_pids+=("$!"); done; wait "${ffmpeg_pids[@]}"'

bash # -P8 indicates Number of threads (of 4 core i7 in this case) find . -name "*.mp3" -print0 | xargs -0 -P8 -n1 -I {} ffmpeg -i {} -acodec libopus {}.opus

Im ersten Befehl werden alle Dateien im aktuellen Verzeichnis gleichzeitig konvertiert. Und der zweite Befehl konvertiert so viele Threads wie zugewiesen werden, aber nicht mehr. Der zweite Befehl sollte besser sein wenn sich viele Dateien im aktuellen Verzeichnis befinden.

Oder nutzen Sie Gnu Parallel.

Opus Media-Player für iOS

Zumindest VLC kann es.

Abschließende Bemerkungen

Ich weiß, eine Menge Leute werden mit mir wegen der 6k Einstellung nicht einverstanden sein. In diesem Fall verwenden Sie bitte einfach 16k.

System-Setup verwendete Werkzeuge: