Opus (Audioformat)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Vorlage:Infobox Dateiformat/Wartung/MagischeZahl fehlt

Opus
Logo
Dateiendung: .opus
MIME-Type: audio/ogg[1], audio/opus[2]
Entwickelt von: IETF-Codec-Arbeitsgruppe
Erstveröffentlichung: 11. September 2012
Art: Audio
Enthalten in: Ogg
Erweitert von: CELT, SILK
Standard(s): RFC 6716
Website: opus-codec.org

Opus ist ein Datenformat zur verlustbehafteten Audiodatenkompression mit spezieller Eignung für interaktive Echtzeitanwendungen über das Internet.

Es ist als ein internationaler Offener Standard in RFC 6716 beschrieben. Als grundlegende Verfahren werden eine Frequenztransformation und Linear Predictive Coding (LPC) genutzt. Es ermöglicht besonders hohe Klangqualität und besonders geringe Verzögerung in Übertragungen.

Merkmale[Bearbeiten]

Spanne der möglichen Bitraten und algorithmischen Verzögerungen im Vergleich

Opus hat eine besonders niedrige Codec-Latenz, um bei Echtzeit-Anwendungen in der Verarbeitung des typischerweise unmittelbar vor der komprimierten Übertragung erzeugten Signales möglichst wenig Verzögerung (Latenzzeit) zu verursachen. Opus arbeitet mit Blocklängen von 2,5 bis 20 (60) ms mit dynamischem, artefaktfreiem Wechsel zwischen unterschiedlichen Blocklängen. Hinzu kommen je nach Modus noch 2,5 bis 5 ms an Lookahead.[3] Es erlaubt konstante und variable Bitraten über einen sehr weiten Bereich von 6 kbit/s bis zu 510 kbit/s und die Abbildung des gesamten menschlichen Hörbereiches. Es können nur je zwei Kanäle (Stereo) gekoppelt werden. Mehr Kanäle können dargestellt werden, indem sie (unabhängig oder eben eventuell paarweise gekoppelt) zusammen in eine Containerdatei gemultiplext werden. Für empfängerseitige Lautheits-Anpassungen wird die EBU-Empfehlung R 128 unterstützt.

Das Verfahren ist als offener Standard offen dokumentiert und eine Referenzimplementierung im Quellcode veröffentlicht. Teile des Verfahrens sind mit Software-Patenten belastet, wobei die Rechteinhaber unbeschränkter Verwendung ihrer Patente im Rahmen der Verwendung des Codecs einschließlich zukünftiger Versionen des Standards zugestimmt haben. Dabei behalten sich jedoch alle vor, ihre Patente zur Abwehr von Patentklagen Dritter einzusetzen.[4]

Opus ist ein Hybrid-Verfahren aus CELT und einer stark modifizierten, inkompatiblen Version von SILK. Das Verfahren kennt dreierlei Modi, zwei für reine Sprachsignale und einen unspezialisierten für beispielsweise Musik. Bei den Sprach-Modi steht ein Modus zur Verfügung, in dem der gesamte menschliche Hörbereich abgebildet wird, wobei die im Wesentlichen auf Frequenztransformation (MDCT) basierenden Algorithmen von CELT für einen oberen Frequenzanteil ab 8 kHz, die im Wesentlichen auf Linear Predictive Coding (LPC) basierenden SILK-Algorithmen für den unteren zuständig sind. Für niedrige Bitraten (sinnvoll unterhalb etwa 30 kBit/s) kann der Frequenzbereich eingeschränkt werden und die CELT-Schicht ausgelassen werden. Für andere Signalarten kann die auf Sprachsignale spezialisierte SILK-Schicht abgeschaltet und ausschließlich das unspezialisierte CELT benutzt werden. Seit Version 0.9.2 (März 2011) kann im laufenden Betrieb nahtlos zwischen diesen Modi umgeschaltet werden und wählt der Encoder in Voreinstellung den Modus automatisch.

Opus-Daten können in Ogg-Container verpackt werden. Der Inhalt solcher Ogg-Opus-Datenströme wird dann mit audio/ogg; codecs=opus angegeben und für Ogg-Opus-Dateien wird die Dateinamenserweiterung .opus empfohlen.[1] An Unterstützung zur Verkapselung von Opus in dem Container-Format Matroska wird gearbeitet.[5]

Tonqualität[Bearbeiten]

Kodierungseffizienz-Kennlinie im Vergleich

In vergleichenden Hörtests zeigt sich Opus bei niedrigen Bitraten den bisher durch die Verwendung der proprietären Spektralbandreplikation dominanten HE-AAC-Codecs qualitativ überlegen.[6] Bei Bitraten von 12 kbit/s und darunter unterlag eine Version des Codecs von Mitte Februar 2011 bei Sprachsignalen den AMR-Codecs aus GSM, die hier qualitativ den Stand der Technik markieren. Für Sprachsignale zeigte sich Opus-intern der Hybrid-Modus bei Bitraten zwischen etwa 20 und 48 kbit/s überlegen – darüber der rein MDCT-basierte und darunter der rein LPC-basierte Modus.[7][8] Im Unterschied zu anderen gängigen Transformationsverfahren sind für Opus stark tonale Signale besonders schwierig und komplexe Passagen hingegen relativ sparsam darstellbar.

Technik[Bearbeiten]

Spektrogramm einer Opus-kodierten Musikaufnahme bei unterschiedlichen Durchschnittsbitraten (≈32 bis ≈160 kbit/s) zeigt deutlich das Tiefpass-Verhalten des Kodierers und die vergleichsweise gute Erhaltung der Bandenergie durch CELT (vergleiche Original, Vorbis, MP3, AAC).

Opus ist ein aus zwei verschiedenen, ursprünglich separaten Verfahren kombinierter Hybridcodec. Eine Transformations-Schicht (ursprünglich CELT) arbeitet auf Basis der modifizierten diskreten Kosinustransformation (MDCT) und Ansätzen von CELP (Codebuch zur Anregung, jedoch in der Frequenzdomäne). Eine auf Sprachsignale spezialisierte Schicht (ursprünglich SILK) basiert auf Linear Predictive Coding (LPC). Das ursprüngliche SILK wurde modifiziert und unter anderem Unterstützung für 10-Millisekunden-Blöcke hinzugefügt. Die gemeinsame Bereichskodierung der beiden Anteile eines Hybrid-Datenstromes wurde von CELT übernommen. Der LPC-Teil arbeitet intern mit einer Abtastfrequenz von 16 kHz. Der Kodierer besitzt einen eingebauten Abtastratenkonverter. Zur Kompensierung des geringeren Lookahead des CELT-Signales wird dieses entsprechend verzögert. SILK hat eine größere algorithmische Verzögerung, um in seinem typischen Einsatzszenario die durch die Übertragungsprotokolle anfallenden Verwaltungsdaten zu minimieren. So sind beispielsweise im reinen CELT-Betrieb niedrigere Latenzen möglich.[3]

Transformations-Schicht (CELT)[Bearbeiten]

Siehe auch Artikel CELT, Abschnitt Technik

Die Transformations-Schicht von Opus funktioniert technisch weitgehend gleich dem aufgegebenen eigenständigen CELT. Es wurde allerdings für die Integration mit SILK modifiziert und auch weiterentwickelt. Hinzugekommen sind Unterstützung für 20-Millisekunden-Blöcke und signalisierbare Abweichungen von der festgelegten Zuweisung verfügbarer Bits auf die (Bark-)Bänder mit einem sogenannten „allocation tilt“ und einem sogenannten „band boost“.

Beteiligte Personen und Organisationen[Bearbeiten]

Opus wird von der Internet Engineering Task Force (IETF) als Request for Comments (RFC) 6716 als internationaler Offener Standard für verlustbehaftete Audiodatenkomprimierung im Internet empfohlen.[9] Er wurde im Standardisierungsverfahren bei der IETF von der Codec-Arbeitsgruppe mit Personal von und auf Basis von zunächst separaten Vorschlägen der Xiph.Org Foundation und Skype Technologies S.A. (heute Microsoft) entwickelt. Hauptentwickler sind Jean-Marc Valin (Xiph.Org, Octasic, Mozilla Corporation), Koen Vos (Skype) und Timothy B. Terriberry (Mozilla Corporation). Weiterhin beteiligt waren Raymond Chen (Broadcom), Gregory Maxwell (Xiph.Org) und Christopher Montgomery (Xiph.Org).

Mozilla zahlt dem Hauptentwickler Valin im Rahmen einer bezahlten Anstellung ein Gehalt für seine Entwicklungsarbeit an Opus. Auch der Browser-Hersteller Opera Software unterstützt Opus explizit als neuen, offenen Standard. Google Inc. setzt sich für die Etablierung von Opus als lizenzkostenfreies Standardformat im Internet ein. Die Skype-Abteilung von Microsoft ist als (Mit-)Initiator des Standardisierungsprozesses weiterhin aktiv an diesem beteiligt. Juin-Hwey (Raymond) Chen von Broadcom steuerte einen Vor- und Nachfilter zur Tonhöhen-Vorhersage in CELT bei. Weitere Beteiligte im Standardisierungsverfahren bei der IETF waren Vertreter des Lehrstuhls für Kommunikationsnetze der Universität Tübingen beziehungsweise deren kommerzieller Unternehmensausgründung „Sonicon“, von Polycom und von Cisco Systems.

Broadcom und die Xiph.Org Foundation halten Patente mit Bezug auf CELT, Patente von Skype/Microsoft sind für den SILK-Teil von Belang. Angebliche Patentansprüche von Qualcomm[10] und Huawei erwiesen sich als unzutreffend.[11]

Geschichte[Bearbeiten]

Die Entwicklung des CELT-Teils geht auf Überlegungen für einen Nachfolger für Vorbis zurück, als dessen Nachfolger es auch von den Merkmalen her gelten kann. Weiterhin löst Opus als neuer Sprachcodec der Xiph-Stiftung deren älteren Sprachcodec Speex ab, der auch das Vorgängerprojekt des Hauptentwicklers Jean-Marc Valin darstellt, mit dem er Erfahrungen mit der Gestaltung von Audio-Codecs gesammelt hat. An CELT wurde seit November 2007 praktisch gearbeitet. Der seit Januar 2007 von Skype entwickelte SILK-Teil ist das Nachfolgeprojekt des SVOPC, welcher als Eigenentwicklung das Unternehmen von den externen, kostenpflichtig lizenzierten Lösungen iSAC und iLBC unabhängig machen sollte.

Siehe auch Artikel CELT, Abschnitt Geschichte und Artikel SILK, Abschnitt Geschichte

Im März 2009 regte Skype bei der IETF die Entwicklung und Standardisierung eines breitbandigen Audio-Codecs an.[12] Daraufhin verging nahezu ein Jahr mit langen und hitzigen Debatten über die Bildung einer entsprechenden Arbeitsgruppe.[13] Vertreter verschiedener Firmen, die an der Standardisierung von patentbelasteten Konkurrenzformaten beteiligt waren, äußerten Einwände gegen die Aufnahme der Standardisierungsarbeiten für einen lizenzkostenfreien Codec. Namentlich traten dabei Vertreter der Firmen Polycom und Ericsson auf – den Machern und Lizenzverkäufern zu G.719 –, sowie von France Télécom, Huawei und den Orange Labs (Abteilung der France Télécom), welche an G.718 beteiligt waren.[14] Im Februar 2010 kam die Arbeitsgruppe schließlich dennoch zustande, der sogar Unterstützung von der entsprechenden Study Group 16 der ITU-T zugesichert wurde.

Im Juli wurde ein erster Prototyp eines Hybridformates veröffentlicht, das die beiden eingereichten Codec-Kandidaten SILK und CELT kombinierte – die Ur-Version von Opus. Das Format wurde im September 2010 bei der IETF zur Standardisierung vorgelegt. Zwischenzeitlich war es eine kurze Zeit als „Harmony“ bekannt, bevor es im Oktober 2010 seinen heutigen Namen bekam.[15] Das Bitstromformat ist seit Anfang Februar 2011 unter dem Vorbehalt letzter Änderungen vorläufig festgelegt.[16] Zum Ende des Juli 2011 erhielt Jean-Marc Valin eine bezahlte Anstellung bei der Mozilla Corporation, um (mehr) an Opus zu arbeiten.[17] Im November 2011 erging der letzte Aufruf der IETF-Arbeitsgruppe für Änderungen am Bitstrom-Format. Am 2. Juli 2012 wurde das Format von der IETF akzeptiert.[18] Die Software befand sich seit dem 8. August im Release-Candidate-Stadium.[19] Die offizielle Veröffentlichung der endgültigen Spezifikation und von Version 1.0 und 1.0.1 der Referenz-Software erfolgte am 11. September 2012.[20]

Relativ schnell wurde in vielfältige Software Unterstützung für das Format eingebaut. Bereits im selben Jahr waren zahlreiche entsprechende Entwicklungsversionen verfügbar, unter anderem von einflussreichen und populären Projekten wie dem Web-Browser Firefox, dem Betriebssystem Debian GNU/Linux und dem VLC media player.

Version 1.1[Bearbeiten]

Mittlerweile wurde in einem experimentellen Entwicklungszweig des Referenz-Kodierers begonnen auf eine Version 1.1 mit deutlich besserer Klangqualität hinzuarbeiten.[21][22] Am 21. Dezember 2012 erschien nach über einem Jahr Entwicklungszeit eine erste Alpha-Version der 1.1-Reihe.[23] Am 11. Juli 2013 begann die Beta-Phase für Version 1.1 und wurde Version 1.0.3 veröffentlicht, die einige Fehler behebt und die Raumklang-API der 1.1-Serie übernimmt. Die fertige Version 1.1 wurde am 5. Dezember 2013 veröffentlicht.[24]

Version 1.1 des Referenzkodierers erreicht durch Ausnutzung von mehr Möglichkeiten des Formates und verbesserte Kodierentscheidungen berichtetermaßen deutlich bessere Klangqualität bzw. Effizienz,[25][26][27] insbesondere bei besonders tonalen Sequenzen. Er nutzt dazu unter anderem mit einer dynamischen Verteilung der verfügbaren Bitrate zwischen Frequenzbändern („dynalloc“ – „band boost“, „allocation tilt“) die Möglichkeiten des Formates für Variabilität der Bitrate (VBR) mehr aus. Er hat einen unbeschränkten VBR-Modus und passt die Bitrate aggressiver der Komplexität des Ausgangsmaterials an. Bei dem neuen VBR-Modus wird nunmehr versucht auch dateiübergreifend eine konstante Qualität zu erreichen und nicht mehr pro Datei die angegebene Zielbitrate zu erreichen. Der Kodierer wurde kalibriert, um sich bei einer größeren Menge kodierten Materials mit einer breiten Mischung unterschiedlicher, typischer Nutzsignale durchschnittlich der angegebenen Zielbitrate anzunähern.[28] Mehrere neue Analyse-Schritte untersuchen Signalcharakteristiken und informieren Kodierentscheidungen. Unter anderem wird nun anhand einer Einschätzung der Tonalität bei besonders tonalen Passagen gezielt die Bitrate erhöht und durch eine Erkennung von Sprachsignalen automatisch zwischen dem integrierten LPC-basierten Sprachcodec, dem MDCT-basierten Kodierung und dem Hybrid-Modus gewechselt. Für Raumklang-Formate mit mehr als zwei Kanälen erfolgt nun eine dynamische Bitraten-Zuteilung auf die einzelnen Kanäle unter Ausnutzung von Maskierungseffekten zwischen den Kanälen und es gab Qualitätsverbesserungen für den LFE-Kanal. Durch erst anfängliche Code-Optimierungen hat der gesamte Referenz-Codec nun eine deutlich höhere Arbeitsgeschwindigkeit, besonders auf ARM-Geräten.

Weitere Neuerungen sind die Möglichkeit vorausschauender Erkennung von Signalcharakteristiken für Betriebsszenarien wenn zeitliche Verzögerungen unkritisch sind, die effizientere Darstellung stark korrelierter Stereo-Signale, das Verwerfen von Gleichstrom-Anteilen (3-Hz-Hochpass), das zeitliche Variieren der Bitrate anhand der Lautstärke und ein Pegelbegrenzer zur Verhinderung von hartem Clipping. [29]

Software[Bearbeiten]

Das Verfahren ist offen dokumentiert und die Referenzimplementierung als Freie Software veröffentlicht. Die Referenzimplementierung (Opus Audio Tools, opus-tools) aus separatem Kodierer („opusenc“) und Dekodierer („opusdec“) wird mitsamt Quellcode unter einer BSD-artigen Lizenz verbreitet. Sie ist in C geschrieben und für Architekturen mit und ohne Gleitkommaeinheit kompilierbar. Das mitgelieferte Diagnose-Werkzeug „opusinfo“ berichtet über Opus-Dateien ausführliche technische Informationen, auch zur Richtigkeit des Bitstromformates. Es ist eine Abspaltung von ogginfo aus den vorbis-tools und daher im Unterschied zu Kodierer und Dekodierer unter Version 2 der GPL verfügbar.

Formatunterstützung[Bearbeiten]

Es gibt vielfältige Unterstützung in Software für einfache Datei- oder Stream-Wiedergabe, IP-Telephonie oder Audio-Streaming, in Web-Browsern, Betriebssystemen und anderem. Wichtige Beispiele:

Auf vielen Plattformen ist Unterstützung verfügbar:

  • Die Referenzimplementierung ist für sehr viele Betriebssysteme und Hardware-Plattformen verfügbar.
  • Für Windows gibt es entsprechende DirectShow-Filter[41][42] und
  • in wichtigen GNU/Linux-Betriebssystemen (Debian[43] und Abkömmlinge wie Ubuntu[44], Fedora[45]) kann Software wie die Referenz-Implementierungen und die Multimedia-Frameworks GStreamer[46] und libavcodec (FFmpeg[47]/Libav[48]) direkt aus den Standard-Paketquellen installiert werden.
  • Die Mobil-Plattform Android unterstützt seit Version 5 (Lollipop) Opus nativ [49]. Für ältere Versionen existieren eine Reihe von Software-Optionen für Opus-Wiedergabe.[50][51][52][53][54][55][56]
  • Mit der Alternativ-Firmware Rockbox[57] besteht Unterstützung auf einer Reihe von portablen Medienwiedergabegeräten (unter anderem Produkte der iPod-Reihe von Apple und iriver- und Archos-Geräte).

Weblinks[Bearbeiten]

 Commons: Opus – Album mit Bildern, Videos und Audiodateien

Einzelnachweise[Bearbeiten]

  1. a b http://tools.ietf.org/html/draft-terriberry-oggopus-01
  2. Network Working Group: RTP Payload Format and File Storage Format for Opus Speech and Audio Codec. In: Opus codec. IETF. 4. Juli 2011. Abgerufen am 26. Oktober 2011.
  3. a b Audio-Mitschnitt vom Treffen der IETF-Codec-Arbeitsgruppe auf der Konferenz IETF78 in Nagasaki, Japan (MP3, ~70 MiB)
  4. https://datatracker.ietf.org/ipr/search/?option=rfc_search&rfc_search=6716
  5. http://wiki.xiph.org/MatroskaOpus
  6. Next-Gen Low-Latency Open Codec Beats HE-AAC, Slashdot-Meldung vom 14. April 2011
  7. Anssi Ramo, Henri Toukomaa: Voice Quality Characterization of IETF Opus Codec, Proceedings of Interspeech 2011, Florenz, Italien, August 2011.
  8. Christian Hoene (Editor), Jean-Marc Valin, Koen Vos, Jan Skoglund: Summary of Opus listening test results. Internet Engineering Task Force, 24. Oktober 2011, abgerufen am 16. Januar 2012 (englisch).
  9. Audiocodec "Opus" ist neuer Internetstandard. In: heise.de. Abgerufen am 12. September 2012.
  10. http://lists.xiph.org/pipermail/opus/2012-August/001649.html
  11. https://hacks.mozilla.org/2012/09/its-opus-it-rocks-and-now-its-an-audio-codec-standard/comment-page-1/#comment-1798071
  12. http://www.ietf.org/mail-archive/web/dispatch/current/msg00080.html
  13. http://heise.de/-858956
  14. http://www.ietf.org/proceedings/75/minutes/codec.txt
  15. http://www.ietf.org/mail-archive/web/codec/current/msg01852.html
  16. http://www.hydrogenaudio.org/forums/?showtopic=86580
  17. http://jmspeex.livejournal.com/7352.html
  18. http://heise.de/-1632291.html
  19. http://lists.xiph.org/pipermail/opus/2012-August/001657.html
  20. http://lists.xiph.org/pipermail/opus/2012-September/001698.html
  21. https://git.xiph.org/?p=opus.git;h=7315b35e13a3a7c504ed6b1fe2d28ad500eb2701
  22. http://www.hydrogenaudio.org/forums/index.php?showtopic=86580&view=findpost&p=814789
  23. http://lists.xiph.org/pipermail/opus/2012-December/001875.html
  24. Opus Codec (Abschnitt News)
  25. http://jmspeex.livejournal.com/9929.html#t17865
  26. http://www.hydrogenaudio.org/forums/index.php?showtopic=86580&view=findpost&p=813211
  27. http://www.hydrogenaudio.org/forums/index.php?showtopic=86580&view=findpost&p=813193
  28.  Jean-Marc Valin, The Xiph.Org Foundation & The Mozilla Corporation (Hrsg.): The Opus Audio Codec. November 2012, Current development, S. 50 (http://jmvalin.ca/misc_stuff/opus_ericsson.pdf).
  29. Christopher Montgomery: Opus update 20130712: 1.1 Beta Release (demo 3). In: Monty's demo pages. Xiph.Org Foundation, 14. Juli 2013, abgerufen am 17. Juli 2013 (englisch).
  30. http://trac.videolan.org/vlc/ticket/7185
  31. http://www.hydrogenaudio.org/forums/?showtopic=96057
  32. Dekodier-Unterstützung seit Version 3.20 Build 1125 Beta 1 vom 2. September 2012, siehe http://www.aimp.ru/index.php?do=changelog&ver=320
  33. http://mumble.sourceforge.net/1.2.4
  34. https://www.phonerlite.de/config_de.htm#Codecs
  35. https://projects.savoirfairelinux.com/issues/14602
  36. https://jitsi.org/index.php/GSOC/WidebandCodecs, https://jitsi.org/index.php/Development/Roadmap
  37. https://developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements#Ogg_Opus
  38. http://heise.de/-1656611
  39. http://lists.xiph.org/pipermail/icecast/2012-July/012237.html
  40. https://github.com/krad-radio/krad_radio
  41. http://reino.degeelebosch.nl/dc-bsm/main.htm
  42. http://lavfilters.googlecode.com/
  43. http://packages.debian.org/wheezy/opus-tools
  44. http://packages.ubuntu.com/search?keywords=opus-tools
  45. https://admin.fedoraproject.org/pkgdb/acls/name/opus-tools
  46. http://gstreamer.freedesktop.org/news/#2012-02-21T14:00:00Z
  47. http://ffmpeg.org/trac/ffmpeg/ticket/1343
  48. http://patches.libav.org/patch/24558/
  49. http://developer.android.com/about/versions/lollipop.html
  50. VLC
  51. „Rockbox as an Application“ (RaaA), http://www.rockbox.org/wiki/RockboxAsAnApplication2010
  52. Firefox
  53. GoneMAD Music Player (GMMP) für Android, seit Version 1.4, siehe http://gonemadmusicplayer.blogspot.de/
  54. Neutron Music Player für Android, seit Version 1.63, siehe http://neutronmp.com/forum/viewtopic.php?t=99
  55. http://forum.powerampapp.com/index.php?/topic/3469-opus-codec/#entry15341
  56. BS.Player für Android, siehe http://forum.bsplayer.com/bsplayer-android/20709-opus-audio-codec-support.html
  57. http://www.rockbox.org/wiki/ReleaseNotes313