# Ketzerische Frage: Opus-Codec für Java



## Guybrush Threepwood (12. Sep 2012)

Hi,
gerade auf Heise gesehen: Audiocodec "Opus" ist neuer Internetstandard | heise online
Das klingt ziemlich spannend und der Codec hat sehr gute Eigenschaften. Weiß jemand, ob es Bemühungen gibt, diesen in Java verfügbar zu machen?

Viele Grüße!


----------



## Marco13 (12. Sep 2012)

Sicher ist es nur eine Frage der Zeit. Ich will gar nicht wissen, wie viele jetzt schon daran arbeiten, und der erste, der damit fertig wird*, gilt dann als "Referenzimplementierung" (und die anderen landen auf dem Müll). Hab' mal den Code überflogen. Wie zu erwarten ist der nicht auf leichte Portierbarkeit in andere Sprachen ausgelegt  Eine reine Java-Implementierung hätte natürlich viele Vorteile, aber vermutlich wäre es erstmal deutlich weniger Aufwand, sowas mit JNI anzusteuern. 

* Der erste. Nicht der beste.


----------



## maki (12. Sep 2012)

Hmm... weiss nicht was ich davon halten soll.

Das Diagramm in dem Link (heise.de) geht nur bis 128kbit, in diesem Bereich von "Qualität" zu sprechen ist IMHO ein schlechter Witz, egal mit welchem (verlustbehafteten) Codec, aber bei 128kbit scheint der Unterschied zu MP3, AAC und Vorbis nur im Nachkommastellenbereich zu liegen, geht also wohl eher darum die Bandbreiten, oder besser "Bandschmalen", die darunter liegen (<128kbit) zu bedienen.

Ob sich das durchsetzt?
Falls es sich im Netz durchsetzt, wie sieht es mit HW aus, "Mp3" Player und konsorten?
Speziell für letztere scheint es keine Vorteile zu geben.

*meine ganze Audio lib auf FLAC umgestellt hab*


----------



## Bile Demon (12. Sep 2012)

maki hat gesagt.:


> nur bis 128kbit, in diesem Bereich von "Qualität" zu sprechen ist IMHO ein schlechter Witz



Qualität ist wohl ein neutraler Begriff. Die Qualität kann gut oder schlecht sein. Passt also.

Was die 128 kbit angeht, da kann ich deine Meinung eher nicht nachvollziehen. Mein Gehör ist nachweislich überdurchschnittlich gut, aber der hörbare Unterschied zwischen einem ordentlich encodierten 128 kbit MP3, einem 320 kbit MP3 und einem FLAC ist (soweit ich das beurteilen kann) meistens(!) marginal. Hängt üblicherweise von der Art der Musik ab, und wenn der MP3-Encoder nix taugt, dann kann da auch mal Mist rauskommen, ok. Aber mir kommt ganz selten mal ein (128 kbit) MP3 unter, wo ich gesagt hätte "Ach du S*****e klingt das furchtbar".

Meine Stereoanlage ist sicher nicht weltklasse, aber sie kann sich hören lassen 

tl;dr: Ich hatte bisher nie den Eindruck als wären 128 kbit MP3s von unerträglich schlechter Qualität.


----------



## Gonzo17 (12. Sep 2012)

Bile Demon hat gesagt.:


> Meine Stereoanlage ist sicher nicht weltklasse, aber sie kann sich hören lassen



Ich will jetzt sicherlich keine Diskussion lostreten, aber gerade auch die Art der Ausgabe ist entscheidend. Wenn man sich das mal mit richtig guten Kopfhörern anhört, dann hört man in der Regel auch viel mehr Details. Genauso muss man sich im Umkehrschluss natürlich fragen wie relevant diese Unterschiede sind, wenn man ohnehin nur mit entsprechend hochwertiger Hardware Differenzen feststellt. Ich würde mal behaupten, dass es für den Durchschnittsverbraucher egal ist.


----------



## Spacerat (12. Sep 2012)

Ketzerische Fragen ziehen ketzerische Antworten nach sich. Mir reicht der Sourcecode völlig, um zu erfahren, wie eine Opusdatei in SIGNED-PCM Aidiodaten gewandelt wird. Mehr wird von meiner "Codec-Sammlung" (mal in Anführungszeichen, denn das ist noch lange keine Sammlung ) eigentlich auch gar nicht verlangt. Was aber von Standard-Java verlangt wird... Audiodateien dürfen maximal nur 2 Kanäle haben, das DirectAudiodevice erlaubt nicht mehr. Das würde bedeuten, dass einige Opus-Dateien (leidernicht nur die ) auf 2 Kanäle heruntergebrochen werden müssten.
Das Problem in Java ist hier folgendes:
Es ist nicht so, dass Java nicht insgesamt nicht aktuell ist, es gibt bereits massig Ansätze die ein oder andere Hardware (3D-Grafik und Multichannelsound) zu unterstützen, z.B. JavaFX für Video und Sound, JOAL, JOGL, JOCL bzw. alles zusammen in LWJGL für 3D und Sound. Leider sind diese Ansätze immernoch optional und das führt dazu, dass man für Dateiencoder keinen eindeutigen Codecstandard findet bzw. extreme Verrenkungen machen muss, um all diese optionalen APIs zu unterstützen.
Das Problem bei diesem optionalen Zeugs ist, dass jeder was anderes macht, bzw. Dateien, deren Formate sich btw. ja kaum ändern, immer auf andere Art in andere Klassen lädt, die, im Gegensatz zu den damit geladenen Dateien, nicht mal kompatibel sind.
Ist es eigentlich so schwer, zu verstehen, dass diese Ansätze (so gut die Leistung dieser APIs auch sonst sein mag) die vollkommen falschen sind? Wie oft hat man schon allein in diesem Forum Fragen wie 





> Wie kann ich dieses oder jenes Dateiformat in Java laden?


und wieviel Verweise dann auf x-verschiedene APIs kommen. Dabei ist's eigentlich recht simpel: Codecs müssen *ein* (irre wichtig, deshalb fett ) eigenes API werden, welches nicht nur als Option in die JVM aufgenommen wird. Darüber hinaus wäre es auch ein falscher Ansatz, solch' eine API kompatibel für andere VMs (z.B. Dalvik) entwickeln zu wollen, solange die auch "ihr eigenes Ding" machen.
Nun ja... man (Ich) arbeitet dran, aber als Einzelkämpfer - obendrein noch Autodidakt - ist man da nicht nur wegen der Flut an Dateiformaten reichlich überfordert.

@maki: Evtl. geht das Diagramm nur bis 128kBit, weil es sozusagen jener Punkt ist, ab welchem man im Gegensatz zu den vorhergehenden, qualitativ nicht mehr viel rausholen kann, bzw. das, was man noch rausholen kann linear nicht mehr darstellbar ist. Man kann sich halt nur noch in immer kleiner werdenden Schritten den 100% fullband Stereo (was 16Bit/44100Hz pro Kanal entspricht) nähern. Und bei über 90% liesse sich schon von Qualität sprechen. Durchgesetzt hat sich Opus nun aber bereits. Internetradios z.B. verwenden lieber 64kBit AAC als 128kBit MP3, weil der Qualitätsunterschied da nur gering aber die Banbreite nur halb so gross ist.


----------



## Bile Demon (12. Sep 2012)

Gonzo17 hat gesagt.:


> Ich würde mal behaupten, dass es für den Durchschnittsverbraucher egal ist.



Darauf wollte ich eigentlich hinaus, weil maki hier den Eindruck vermittelt, als wären 128 kbit in jeder Hinsicht inakzeptabel, und das kann ich nicht bestätigen. Wenn Frequenzen abgeschnitten werden, geht selbstverständlich Qualität verloren, aber verlustbehaftete Audiokompression arbeitet ja gerade damit, möglichst nur die Informationen wegzunehmen, die man praktisch kaum hören kann. Und wenn ich nur im Labor nachweisen kann, dass es tatsächlich "schlechter" klingt, dann hat der Codec wohl seinen Zweck erfüllt.

Im übrigen habe ich auch (relativ) teure Kopfhörer. Meine Beobachtung war damit nicht gänzlich anders.

Was den Opus-Codec angeht: Wenn der Speicherplatzverbrauch sinkt, und die Qualität gleich bleibt oder sogar steigt, warum nicht? Bei Videocodecs freue ich mich auch über jede Revolution.


----------



## maki (12. Sep 2012)

Was Gonzo sagt ist natürlich richtig, Boxen/Kopfhörer sind entscheidend, und die Freaks richten sogar ihre Wohnung passen ein, nix mit Teppich oder Stoffbezogenen Sofas.. von der eigentlichen Musik ganz zu schweigen

Aaaaaber...



> Darauf wollte ich eigentlich hinaus, weil maki hier den Eindruck vermittelt, als wären 128 kbit in jeder Hinsicht inakzeptabel, und das kann ich nicht bestätigen.


Das habe ich nicht gesagt *g*

@Bile Demon, du sagst ja selber dass es einen Unterschied gibt, auch wenn der für dich nur klein ist, er ist vorhanden.
Habe von keinem aus meinem bekanntenkreis was anders gehört, d.h. keiner hat gesagt dass er keinen Unterschied hört!
Bei den tiefen Tönen merkt das jeder, bei höhen nur die mit einem guten Gehör..
Alle "bekehrten" steigen gerade auf FLAC um.

Habe selber auch einige Sachen die in HD Audio vorliegen (192kHz/24 bit u.ä.), behaupte nicht dass ich da den Unterschied zu CD Qualität höre.
Nur, wenn es sich als FLAC besser anhört, und der Unterschied nur in der Dateigröße liegt, dann ist für mich FLAC die beste Wahl, irgendwie muss ich ja meine 4,5 TB vollkriegen.
128Kbit MP3s finde ich nicht so dolle, aber "unerträglich schlecht" ist was anderes.

Alles in allem wird schlechte Musik durch bessere Wiedergabequalität nicht besser, gute Musik durch schlechte Wiedergabequalität aber eindeutig schlechter, aber nicht unbedingt schlecht.

Zum Thema,

bei bandbreiten unter 128Kbit, und nur dort git es angeblich einen Vorteil für Opus, sorry, dass ist doch nur relevant  wenn man keine schnelle Inet-Anbindung hat, auf einem HW Player ist das bei den heutigen Speicherpreisen (und die werden noch weiter sinken, so wie immer) vollkommen irrelevant.
FLAC hat zB. den Vorteil, dass es sich recht "einfach", ohne starke HW, wieder dekomprimieren/abspielen lässt.


----------



## Spacerat (12. Sep 2012)

@maki: Okay... gegen losless hat natürlich keiner dieser Codecs eine Chance, es sei denn man hat keine so hohe Bandbreite zur Verfügung, z.B. Internet-Radio. BTW.: nach FLAC (Free lossless Audio Codec) musste ich erst mal Googeln. XD


----------



## Evil-Devil (12. Sep 2012)

Das FLAC schaut interessant aus. Jetzt habe ich erst OGG/OpenAL zum laufen bekommen...und dann gibt es schon wieder neue Dinge. 

128kbit sind noch aus ISDN Zeiten und selbst da hat jeder mit ner Flat nur 196kbit gezogen.

Gibt es irgendwo ne Übersichtsseite bezüglich der Codes und ihrer Kompression/Quali? Denn wenn FLAC wirklich so gut sein sollte, wäre eine OpenAL Anbindung nice to have...auch wenn es darauf hinaus läuft es selbst dekodieren zu müssen.


----------



## Bile Demon (12. Sep 2012)

Ok, dann hab ich dich wohl missverstanden. Sorry 

FLAC hat zudem den Nachteil, dass es kaum Geräte gibt, die sowas abspielen. Ändert sich aber womöglich irgendwann.

Aber du hast da natürlich recht, wenn man sich überlegt, dass man mit FLAC verlustfreies Audio bekommt bei moderater Datenrate. Muss jeder für sich selbst entscheiden, welches Verhältnis von Audioqualität zu Speicherplatz ihm ausreicht.

Opus wäre zum Beispiel bei Audiostreaming fürs Handy brauchbar, also da wo jedes Byte zählt.


----------



## maki (12. Sep 2012)

Spacerat hat gesagt.:


> @maki: Okay... gegen losless hat natürlich keiner dieser Codecs eine Chance. BTW.: nach FLAC (Free lossless Audio Codec) musste ich erst mal Googeln. XD


Sorry, hätte ich wohl dazusagen sollen...

Natürlich kann man verlustfreie Kompression die die vollen 1,5 MBit Cd Qualität bringen nicht mit verlustbehafteter Kompression bei 128KBit vergleichen (egal welcher Codec), war auch nicht meine absicht hier Werbung für FLAC o.ä. zu machen.

Wie dem uach sei, für mich persönlich sehe ich keine Vorteile in einem Codec der bei unter 128kbit bessere Ergebnisse bringt, ist aber nur meine persönlich Meinung.


Nachtrag:
AFAIK bringt Android 4.* von Haus aus Flac Unterstützung mit, davor ging es auch mit eingien SW Playern (allerdings ist der DAC in meinem SGS2 nicht so dolle), richtige HW gibts s auch.

@Bile Demon
So moderat ist die Datenrate gar nicht, nur ca. 50-40% Platzersparniss, d.h. eine CD hat ca.  350-400MB.


----------



## Spacerat (12. Sep 2012)

maki hat gesagt.:


> Wie dem uach sei, für mich persönlich sehe ich keine Vorteile in einem Codec der bei unter 128kbit bessere Ergebnisse bringt, ist aber nur meine persönlich Meinung.


Das bringt ab ca. 96% für alle Codecs eigentlich auch nur noch geringfügig Vorteile. FLAC hat dagegen ohnehin immer 100%. Nach der 128kBit-Marke dürfte also klar sein, dass man nur noch schwerfällig an die 100% herankommt, diese aber niemals erreicht, weil verlustbehaftet. Interessant sind Codecs wie Opus, MP3 und was auch immer auch nur dort, wofür letztendlich gerade standardisiert wurden, für's Internet. FLAC bekommst du bei der Kompression kaum live durch einen DSL-Stream.


----------



## Guest2 (12. Sep 2012)

Moin,

[ot] ein weiterer Vorteil von FLAC (und jedem anderen verlustlosem Verfahren) ist, dass es sich jederzeit in ein anderes Format überführen lässt, ohne dabei unnötig Qualität einzubüßen. Wenn man wirklich ein Opus braucht, lässt sich dieses leicht aus einem FLAC erzeugen, aus einem MP3 hingegen nur mit Qualitätseinbußen. Je mehr verlustbehaftete Verfahren dabei kaskadiert werden, je schlimmer wird das Ergebnis. Deswegen ist insbesondere, wenn man Musik langfristig archivieren möchte, FLAC das imho sinnvollere Format.[/ot]

Viele Grüße,
Fancy


----------



## maki (12. Sep 2012)

Spacerat hat gesagt.:


> Das bringt ab ca. 96% für alle Codecs eigentlich auch nur noch geringfügig Vorteile. FLAC hat dagegen ohnehin immer 100%. Nach der 128kBit-Marke dürfte also klar sein, dass man nur noch schwerfällig an die 100% herankommt, diese aber niemals erreicht, weil verlustbehaftet. Interessant sind Codecs wie Opus, MP3 und was auch immer auch nur dort, wofür letztendlich gerade standardisiert wurden, für's Internet. FLAC bekommst du bei der Kompression kaum live durch einen DSL-Stream.


So gesehen hast du natürlich recht und es gibt wohl doch sinnvolle Einsatzfelder für OPUS, speziell fürs mobile inet, das immer wichtiger wird.

Nehme alles zurück und behaupte das Gegenteil :joke:

@fancy
Ja, de größte Vorteil von verlustfreien Codecs ist dass man damit langfristig seine Musik behalten kann, egal welcher verlustbehafteter Codec gerade In ist bzw. unterstützt wird.
Witzig finde ich es immer wenn man hört dass sich jemand ein YOutubevideo runterlädt, dann die Audiospur extrahiert und in mp3 konvertiert... da bleibt nicht viel zurück.

Ach ja, neben Metadaten (wie es zB. auch andere Codecs bieten, aber WAV eben nicht) hat FLAC auch keienrlei Unterstüztung für DRM AFAIK.


----------

