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/Verfahren zur verlustbehafteten Audiodatenkompression mit spezieller Eignung für interaktive Echtzeitanwendungen über Internet.

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.[3] 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[4] und Huawei erwiesen sich als unzutreffend.[5]

Inhaltsverzeichnis

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) Millisekunden mit dynamischem, artefaktfreiem Wechsel zwischen unterschiedlichen Blocklängen. Hinzu kommen je nach Modus noch 2,5 bis 5 Millisekunden an Lookahead.[6] Es erlaubt konstante und variable Bitraten über einen sehr weiten Bereich von 6 kb/s bis zu 510 kb/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.[7]

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 acht Kilohertz, 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.[8]

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.[9] 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.[10][11] 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. Die Transformations-Schicht (CELT) arbeitet auf Basis der modifizierten diskreten Kosinustransformation (MDCT) und Ansätzen von CELP (Codebuch zur Anregung, jedoch in der Frequenzdomäne). Das ursprüngliche CELT wurde modifiziert und unter anderem Unterstützung für 20-Millisekunden-Blöcke hinzugefügt. Die auf Sprachsignale spezialisierte SILK-Schicht 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 SILK-Teil arbeitet intern mit einer Abtastfrequenz von 16 kHz. Der Encoder 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.[6]

Siehe auch Artikel CELT, Abschnitt Technik

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]

Version 1.1[Bearbeiten]

Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen (beispielsweise Einzelnachweisen) ausgestattet. Die fraglichen Angaben werden daher möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, indem du die Angaben recherchierst und gute Belege einfügst. Näheres ist eventuell auf der Diskussionsseite oder in der Versionsgeschichte angegeben. Bitte entferne zuletzt diese Warnmarkierung.

Mittlerweile wurde in einem experimentellen Entwicklungszweig des Referenz-Kodierers begonnen auf eine Version mit deutlich besserer Klangqualität hinzuarbeiten, die als Version 1.1 veröffentlicht werden soll.[21][22] Sie erreicht durch verbesserte Kodierentscheidungen und verbessertes VBR-Verhalten (VBR – variable Bitrate) berichtetermaßen deutlich verbesserte Klangqualität,[23][24][25] insbesondere bei besonders tonalen Sequenzen. Sie nutzt dazu unter anderem die Möglichkeiten des Formates für variable Bitraten mehr aus. Sie hat einen unbeschränkten VBR-Modus und passt die Bitrate aggressiver der Komplexität des Ausgangsmaterials an. Bei dem neuen VBR-Modus wird nichtmehr pro Datei versucht, die angegebene Zielbitrate zu erreichen. Hingegen wurde der Kodierer kalibriert, um sich bei einer größeren Menge kodierten Materials mit einer breiten Mischung unterschiedlicher, typischer Nutzsignale durchschnittlich der angegebene Zielbitrate anzunähern.[26] Am 21. Dezember 2012 erschien nach über einem Jahr Entwicklungszeit eine erste Alpha-Version der 1.1-Reihe.[27]

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]

VoIP-Software[Bearbeiten]

  • TeamSpeak 3 unterstützt Opus ab der Client Version 3.0.10 bzw. Server Version 3.0.7
  • Der SIP- und XMPP-basierte VoIP- und Chat-Client Jitsi unterstützt seit Version 2.0[28]
  • Die Audio-Chat-Software Mumble nutzt ab der Version 1.2.4 Opus als Standardcodec (mit Fallback auf CELT).[29]
  • Der SIP- und IAX2-Client SFLphone wird derzeit mit Opus-Unterstützung ausgestattet.[30]
  • Beim Skype-Client ist der Einbau abgeschlossen, eine entsprechende Version jedoch noch nicht veröffentlicht.[31]
  • Die SIP-Clients Phoner und PhonerLite bieten bereits seit mehreren Version eine Opus-Unterstützung.[32]

Web-Browser und -Frameworks[Bearbeiten]

  • Für WebRTC-kompatible Browser ist Opus-Unterstützung verpflichtend.[33]
  • Gecko (und damit Mozilla Firefox und Thunderbird) enthält ab Version 15 Unterstützung für Opus.[34]
  • Opera unterstützt je nach verwendetem Back-End bereits jetzt direkte Wiedergabe eingebetteter Opus-Dateien[35] und Opus- und WebRTC-Unterstützung sind auf der Entwicklungs-Roadmap.[36]
  • Google Chrome unterstützt Opus ab Version 25.

Streaming Audio[Bearbeiten]

Betriebssysteme und Desktop-Multimedia-Frameworks[Bearbeiten]

  • In Fedora können die opus-tools seit Version 16 direkt aus den Standard-Paketquellen installiert werden.[39]
  • Im GNU/Linux-Betriebssystem Debian sind die opus-tools sowie libopus ab der aktuellen stabilen Version („wheezy“) direkt aus den Standard-Paketquellen installierbar.[40]
  • In Ubuntu können die opus-tools ab Version 12.10 („Quantal Quetzal“) direkt aus den Standard-Paketquellen installiert werden.[41]
  • Mit DC-Bass Source Mod und den LAV Filters existieren DirectShow-Filter für Unterstützung in Windows-Betriebssystemen.[42][43]
  • Bei GStreamer ist der Einbau von Opus-Unterstützung abgeschlossen.[44]
  • Für libavcodec (von FFmpeg beziehungsweise Libav) existiert eine Unterstützung über libopus;[45][46] eine eigenständige, integrierte Unterstützung wird derzeit in einem Summer-of-Code-Projekt umgesetzt und steht wenige Wochen vor der Fertigstellung.

Hardware-Unterstützung[Bearbeiten]

  • Rockbox unterstützt Opus seit Version 3.13.[47] Damit besteht Unterstützung auf einer Reihe von portablen Medienwiedergabegeräten (unter anderem Produkte der iPod-Reihe von Apple und iriver- und Archos-Geräte) und durch „Rockbox as an Application“ (RaaA)[48] auch auf Android-Geräten.

Wiedergabe-Software[Bearbeiten]

  • VLC media player unterstützt das Dekodieren seit Version 2.0.4[49]
  • Dekodier-Unterstützung im AIMP seit Version 3.20 Build 1125 Beta 1 (2. September .2012).[50]
  • foobar2000 unterstützt das Format seit Version 1.1.14 beta 1 im Lieferzustand.[51]
  • Neutron Music Player für Android unterstützt das Format seit Version 1.63[52]
  • GoneMAD Music Player (GMMP) für Android unterstützt OPUS seit Version 1.4[53]

Siehe auch[Bearbeiten]

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. Audiocodec "Opus" ist neuer Internetstandard. In: heise.de. Abgerufen am 12. September 2012.
  4. http://lists.xiph.org/pipermail/opus/2012-August/001649.html
  5. https://hacks.mozilla.org/2012/09/its-opus-it-rocks-and-now-its-an-audio-codec-standard/comment-page-1/#comment-1798071
  6. a b Audio-Mitschnitt vom Treffen der IETF-Codec-Arbeitsgruppe auf der Konferenz IETF78 in Nagasaki, Japan (MP3, ~70 MiB)
  7. https://datatracker.ietf.org/ipr/search/?option=rfc_search&rfc_search=6716
  8. http://wiki.xiph.org/MatroskaOpus
  9. Next-Gen Low-Latency Open Codec Beats HE-AAC, Slashdot-Meldung vom 14. April 2011
  10. Anssi Ramo, Henri Toukomaa: Voice Quality Characterization of IETF Opus Codec, Proceedings of Interspeech 2011, Florenz, Italien, August 2011.
  11. 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).
  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://jmspeex.livejournal.com/9929.html#t17865
  24. http://www.hydrogenaudio.org/forums/index.php?showtopic=86580&view=findpost&p=813211
  25. http://www.hydrogenaudio.org/forums/index.php?showtopic=86580&view=findpost&p=813193
  26.  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).
  27. http://lists.xiph.org/pipermail/opus/2012-December/001875.html
  28. https://jitsi.org/index.php/GSOC/WidebandCodecs, https://jitsi.org/index.php/Development/Roadmap
  29. http://mumble.sourceforge.net/1.2.4
  30. https://projects.savoirfairelinux.com/issues/14602
  31. http://blogs.skype.com/en/2012/09/skype_and_a_new_audio_codec.html
  32. https://www.phonerlite.de/config_de.htm#Codecs
  33. http://heise.de/-1656611
  34. https://developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements#Ogg_Opus
  35. http://my.opera.com/community/forums/topic.dml?id=1491802
  36. http://news.cnet.com/8301-1023_3-57494622-93
  37. http://lists.xiph.org/pipermail/icecast/2012-July/012237.html
  38. https://github.com/krad-radio/krad_radio
  39. https://admin.fedoraproject.org/pkgdb/acls/name/opus-tools
  40. http://packages.debian.org/wheezy/opus-tools
  41. http://packages.ubuntu.com/search?keywords=opus-tools
  42. http://reino.degeelebosch.nl/dc-bsm/main.htm
  43. http://lavfilters.googlecode.com/
  44. http://gstreamer.freedesktop.org/news/#2012-02-21T14:00:00Z
  45. http://ffmpeg.org/trac/ffmpeg/ticket/1343
  46. http://patches.libav.org/patch/24558/
  47. http://www.rockbox.org/wiki/ReleaseNotes313
  48. http://www.rockbox.org/wiki/RockboxAsAnApplication2010
  49. http://trac.videolan.org/vlc/ticket/7185
  50. http://www.aimp.ru/index.php?do=changelog&ver=320
  51. http://www.hydrogenaudio.org/forums/?showtopic=96057
  52. http://neutronmp.com/forum/viewtopic.php?t=99
  53. http://gonemadmusicplayer.blogspot.de/