[[Vorlage(Getestet, bionic, focal)]]

{{{#!vorlage Wissen
[:Pakete installieren: Installation von Programmen]
[:Programme_kompilieren: Programme aus dem Quellcode erstellen]
[:Terminal: Ein Terminal öffnen]
}}}
[[Inhaltsverzeichnis(1)]]

[[Bild(opus-logo.png, 112, align=left)]]
[http://opus-codec.org/ Opus] {en} ist ein junges Audio-Format, das eine Vielzahl nützlicher Eigenschaften in sich vereint. Ähnlich [:LAME:MP3] oder [:Vorbis:] verkleinert ein Opus-Codec Audiodaten mittels [wikipedia:Audiodatenkompression#Verlustbehaftete_Audiodatenkompression:verlustbehafteter Reduktion] anhand eines [wikipedia:Audiodatenkompression#Psychoakustik:psychoakustischen Modells]. Der Referenz-Codec ist anderen älteren Codecs meist deutlich überlegen. Insbesondere bei Bitraten oberhalb von etwa 15 Kilobits pro Sekunde (kbit/s oder kbps) werden bessere Ergebnisse erzielt. Weiterhin ist ein auf menschliche Sprache spezialisierter Modus integriert. Das Format ist seit Sommer 2012 ein von der [wikipedia:Internet Engineering Task Force:] (IETF) abgesegneter, weltweiter Standard zur Audiokodierung im Internet.

Zur ersten groben Abschätzung der Klangqualität: Bei etwa 96 kbit/s durchschnittlicher Bitrate kann man mit den 1.0.x-Versionen des Referenzkodierers bis auf mehr oder weniger seltene Problemsituationen klanglich transparente Audiodateien erzeugen, für die beispielsweise mit dem älteren Format MP3 eine Bitrate von 160 kbit/s oder mehr notwendig ist. Praktisch heißt das, man erhält bei gleicher Qualität nur halb so große Dateien.

= Funktionsübersicht =
[[Vorlage(Bildunterschrift, ./opus-quality.png, 320, "Opus im Vergleich mit anderen Audio-Codecs ([http://opus-codec.org/comparison/ Bildquelle] {en})", right)]]

Während die technischen Details einem [wikipedia:Opus_(Audioformat):Wikipedia-Artikel] und der Projektseite zu entnehmen sind, zeigt die folgende Liste die für den Benutzer sichtbaren Vor- und Nachteile:

 * Pro:
  * nur noch ein Codec für Musik und Sprache notwendig
  * hohe bis sehr hohe Klangqualität im Vergleich mit anderen Formaten/Codecs
  * streamingfähig
  * Einbetten von [:Metadaten:]
  * Unterstützung von [wikipedia:Cuesheet:Cuesheets] und [wikipedia:Replay_Gain:Replay Gain]
  * Abspielen auch von beschädigten Dateien und Datenströmen durch Fehlerkorrektur
  * lizenzkostenfrei
 * Contra:
  * Konvertierung in andere verlustbehaftete Formate birgt [wikipedia:Generationsverlust:]
  * fast keine Unterstützung durch Hardware-Player (Ausnahme: die offene Firmware [wikipedia:Rockbox:])

Das Format und der Referenz-Codec beherrschen sowohl Datenströme mit unbeschränkt oder nach bestimmten Vorgaben beschränkt variabler [wikipedia:Bitrate:] (VBR, Standard bei Opus) als auch mit fester, konstanter Bitrate (CBR).

= Installation =
Die Unterstützung für das Format kann aus den offiziellen Paketquellen installiert [1] werden:

{{{#!vorlage Paketinstallation
libopus0, Referenz-Codec
opus-tools, siehe [#Kommandozeilenwerkzeuge Kommandozeilenwerkzeuge]
}}}

= Nutzung =
In der Praxis hängt die Nutzung von der Unterstützung durch Multimedia-Programme ab. Am einfachsten ist diese, wenn die Einbindung über [#Kommandozeilenwerkzeuge Kommandozeilenwerkzeuge] möglich ist. Die zweite Variante ist die Nutzung über das Multimedia-Framework [:GStreamer:]. Auch eine dritte Möglichkeit ist vorhanden: manche Programme wie Firefox enthalten eigene Routinen zum Abspielen und sind so unabhängig von den ersten beiden Varianten.

== Wiedergabe ==
 * Mit dem [:VLC:] Media Player kann das Format ab Version 2.0.4 ohne weiteres abgespielt werden
 * Beim ersten Abspielversuch werden weitere Pakete benötigt, deren automatische Installation gleich angeboten wird:
  * [:Banshee:]
  * [:Rhythmbox:]
  * [:Totem:]
 * [:Firefox:] kann ab Version 15 in Webseiten eingebettete Opus-Dateien und -Streams wiedergeben ([https://www.opus-codec.org/examples/#example-of-use-in-a-web-page Beispiel] {en})

== Erzeugung ==
 * [:Soundconverter:] zum bequemen Umwandeln: Ab Version 2.0.4 bzw. [:Raring: Ubuntu 13.04] kennt das Programm nach der Installation von [packages:gstreamer0.10-plugins-bad:] in Version 0.10.23 oder neuer Opus.
 * [:Rubyripper:] zum direkten Rippen von Audio-CDs. Mit Rubyripper kann man beliebige Kommandozeilen-Kodierer verwenden. Für eine englischsprachige Schritt-für-Schritt-Anleitung zur Nutzung mit Opus siehe [http://wiki.hydrogenaudio.org/?title=Rubyripper_and_OggOpus Rubyripper and OggOpus] {en}.
 * [:Audacity:] kann Opus-Dateien mit externen Kodieren erzeugen; dazu zum Abspeichern eine der diversen Exportier-Optionen im ''"Datei"''-Reiter verwenden. Dort als Format ''"(externes Programm)"'' wählen, als ''"Befehl"'' verwendet werden können; in aktueller Versionen auch schon intern vorgesehen.
  * {{{opusenc --bitrate 128 - "%f".opus}}} - es können auch weitere opusenc-Optionen aufgeführt werden (siehe unten, oder auch in der  [:Manpage:] zu opusenc)
  * {{{ffmpeg -i - -c:a libopus -b:a 128k "%f".opus}}} - liefert ähnliche Ergebnisse, hier wird der Umweg über [:FFmpeg:] genommen, das funktioniert allerdings nur mit FFmpeg-Versionen, die mit der Option `--enable-libopus` konfiguriert wurden.
  * Der einzelne Bindestrich '-' ist wichtig, er steht für die Eingabedatei, die Audacity liefert, `"%f"` ist der Platzhalter für die Ausgabe-Datei mit Pfad, die in Audacity unter ''"Ordner"'' angegeben wird.

== Audio-CDs erstellen ==
 * [:Brasero:]
 * [:Xfburn:]

== Metadaten ==
Verschiedene Spezialprogramme erlauben massenhaftes Bearbeiten von Metadaten in Opus-Dateien. Teils sind entsprechende Programmversionen noch zu neu, um bereits ihren Weg in die offiziellen Ubuntu-Paketquellen gefunden zu haben und finden sich dann zum Beispiel auf [:Launchpad:]. Darunter sind [:EasyTAG:] (ab Version 2.1), [:Ex Falso:] und [:Kid3:] (ab Version 3 vom 23. Oktober 2013) bzw. entsprechende Backend-Bibliotheken wie mutagen (ab Version 0.21).

opusenc übernimmt beim Transkodieren Metadaten aus FLAC-Dateien.

== Kommandozeilenwerkzeuge ==
Die '''opus-tools''' sind ein Paket mit nützlichen Kommandozeilenwerkzeugen [3] zum Umgang mit Opus-Dateien und -Datenströmen. Nach der Installation stehen die Einzelanwendungen `opusenc`, `opusdec` und `opusinfo` zur Verfügung. Nun können Audiodaten nach Herzenslust hin- und herkonvertiert, in sogenannten [:Shell/Umleitungen:Pipes] mit mehreren hintereinandergeschalteten Programmen oder auch geskriptet verarbeitet werden.

=== opusenc ===
Folgender Befehl wandelt PCM-Daten in Opus um:

{{{#!vorlage Befehl
opusenc [OPTIONEN] EINGABE AUSGABE
}}}
Es können ausschließlich [wikipedia:RIFF WAVE:WAVE], [wikipedia:Audio Interchange File Format:AIFF], [:FLAC:] und [wikipedia:Puls-Code-Modulation:PCM]-Rohdaten verarbeitet werden. Für Ein- und Ausgabe können Dateien oder Standard-Datenströme (gekennzeichnet durch ein '''-''') genutzt werden. Die wichtigste Option ist wahrscheinlich die Angabe einer Bitrate. Beispiele:

 * Die einfachste Variante (mit einer Bitrate von 96 kbps): {{{#!vorlage Befehl
opusenc DATEI.wav DATEI.opus
}}}
 * Festlegen der Bitrate auf 128 kbps: {{{#!vorlage Befehl
opusenc --bitrate 128 DATEI.flac DATEI.opus
}}}
 * Eine konstante (CBR) statt einer variablen Bitrate (VBR) verwenden: {{{#!vorlage Befehl
opusenc --hard-cbr --bitrate 160 DATEI.wav DATEI.opus
}}}
 * Alle Dateien in einem Ordner von Titel-nn.flac nach Titel-nn.opus mit VBR und 160 kbps umwandeln: {{{#!vorlage Befehl
for j in *.flac; do opusenc --bitrate 160 "$j" "${j%.*}-(VBR-160).opus"; done
}}}
 * Eine WavPack-Datei umwandeln: {{{#!vorlage Befehl
wvunpack DATEI.wv -o - | opusenc - DATEI.opus
}}}
Neben diesen Parametern zur Konvertierung können auch [:Metadaten:] in Opus-Dateien geschrieben werden. Grundlage bilden die Metadaten-Spezifikationen von [:Vorbis:Ogg/Vorbis]. Beispiele:

||<-2 rowclass="titel"> Metadaten hinzufügen ||
||<rowclass="kopf"> Option || Zweck ||
|| `--artist NAME` || Künstlername oder Gruppe||
||<rowclass="highlight"> `--title TITEL` || Songtitel ||
|| `--album NAME` || Albumname ||
||<rowclass="highlight"> `--genre GENRE` || Musikrichtung ||

Weitere Informationen sind – wie auch bei den nachfolgenden Programmen – der jeweiligen [:man:Manpage] zu entnehmen.

=== opusdec ===
Das Gegenstück `opusdec` wandelt Opus in PCM-Daten. Bedienung und Ein-/Ausgabe-Möglichkeiten sind im Grunde analog, wobei die Ausgabe in der Standardeinstellung an die Soundkarte geleitet wird. Daher spielt der folgende Befehl die jeweils angegebene Datei ab:

{{{#!vorlage Befehl
opusdec DATEI.opus
}}}
Eine Konvertierung erfolgt durch Angabe eines Dateinamens:

{{{#!vorlage Befehl
opusdec DATEI.opus DATEI.wav
}}}

=== opusinfo ===
`opusinfo` gibt zu einer oder auch mehreren Opus-Dateien technische und statistische Informationen aus und prüft auf fehlerhafte Datenströme. Beispiel:

{{{#!vorlage Befehl
opusinfo DATEI.opus
}}}
Ausgabe:

{{{
Processing file "DATEI.opus"...

New logical stream (#1, serial: 2e2d7d65): type opus
Encoded with libopus 1.0.1
User comments section follows...
        ENCODER=opusenc from opus-tools 0.1.5
Opus stream 1:
        Pre-skip: 356
        Playback gain: 0 dB
        Channels: 2
        Original sample rate: 44100Hz
        Packet duration:   20.0ms (max),   20.0ms (avg),   20.0ms (min)
        Page duration:   1000.0ms (max),  999.9ms (avg),  980.0ms (min)
        Total data length: 4515795 bytes (overhead: 0.679%)
        Playback length: 6m:27.970s
        Average bitrate: 93.12 kb/s, w/o overhead: 92.48 kb/s
Logical stream 1 ended
}}}

= Links =
 * [http://opus-codec.org/ offizielle Webpräsenz] {en}
  * [http://www.opus-codec.org/examples/ Hörbeispiele] {en} {dl} - in verschiedenen Bitraten
 * [wikipedia:Opus (Audioformat):Opus] - Wikipedia
 * [http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2013/05/Audio-Codec-Opus-Einer-fuer-Alle-s Tonmeister - Audio-Codec Opus: einer für alle(s)] {de} - LinuxUser Community Edition, 05/2013

#tag: Multimedia, Audio, Shell