Ketzerische Frage: Opus-Codec für Java

Marco13

Top Contributor
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.
 
M

maki

Gast
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

Bekanntes Mitglied
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.
 
Zuletzt bearbeitet:
G

Gonzo17

Gast
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.
 
S

Spacerat

Gast
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.
 
Zuletzt bearbeitet von einem Moderator:

Bile Demon

Bekanntes Mitglied
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.
 
M

maki

Gast
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.
 
S

Spacerat

Gast
@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
 
Zuletzt bearbeitet von einem Moderator:

Evil-Devil

Top Contributor
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

Bekanntes Mitglied
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.
 
M

maki

Gast
@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.
 
Zuletzt bearbeitet von einem Moderator:
S

Spacerat

Gast
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.
 
Zuletzt bearbeitet von einem Moderator:
G

Guest2

Gast
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
 
M

maki

Gast
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.
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Minecraft Frage für einen Minecraft Server Spiele- und Multimedia-Programmierung 2
G [Java/KryoNet/LibGDX] Mutliplayer Packet Frage Spiele- und Multimedia-Programmierung 2
G [Java Server] Allgemeine Frage zum Thema Networking in Videospielen Spiele- und Multimedia-Programmierung 15
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
S ImageSlider frage Spiele- und Multimedia-Programmierung 3
Anfänger2011 Minimap: Theoretische Frage zur Umsetzung Spiele- und Multimedia-Programmierung 2
Androbin Kollisions-Frage Spiele- und Multimedia-Programmierung 8
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
S LWJGL Kamera Frage Spiele- und Multimedia-Programmierung 2
P Frage zu einem Projekt "Einarmiger Bandit" 3 Walzen / 9 Zeichnungen BLUEJ Spiele- und Multimedia-Programmierung 10
CookieSoft OpenGl Translatef Frage Spiele- und Multimedia-Programmierung 2
Kenan89 Theoretische Frage zu Tile Spielkarten Spiele- und Multimedia-Programmierung 9
R Tileloader Frage Spiele- und Multimedia-Programmierung 2
S Frage: NullPointer, aber warum? Spiele- und Multimedia-Programmierung 8
J Anfänger Frage wie adden? Spiele- und Multimedia-Programmierung 9
R Frage zur Kollision Spiele- und Multimedia-Programmierung 5
M.F.G. Spielvorstellung (plus KI frage): Connect Four – Extreme Spiele- und Multimedia-Programmierung 11
Helgon OpenGL Blend Frage Spiele- und Multimedia-Programmierung 18
P Frage bzgl. TextAdventure Spiele- und Multimedia-Programmierung 11
K Frage zur 3D Entwicklung zwecks vorhandener Engines Spiele- und Multimedia-Programmierung 17
V Frage zu AffineTransforms Spiele- und Multimedia-Programmierung 2
N frage zu der mp3spi Spiele- und Multimedia-Programmierung 2
J Frage zu Threads Spiele- und Multimedia-Programmierung 5
C Frage zu Ray-Picking mit JOGL Spiele- und Multimedia-Programmierung 13
M VRML Loader(noob Frage) ^^ Spiele- und Multimedia-Programmierung 3
M Prinzipielle Frage: Kann Java Grafiken ausschneiden? Spiele- und Multimedia-Programmierung 3
R Frage zu Hütchenspielprogrammierung! Spiele- und Multimedia-Programmierung 47
V Frage zu Grafiken und Software! Spiele- und Multimedia-Programmierung 5
radiac Mal eine ganz Doofe Frage... verzeiht :) Spiele- und Multimedia-Programmierung 9
Developer_X Eine Frage zur ViewBesetzung Spiele- und Multimedia-Programmierung 28
H BlueJ Frage Spiele- und Multimedia-Programmierung 13
K Malefiz programmieren - Frage zu den einzelnen Spielfeldern Spiele- und Multimedia-Programmierung 5
G Ping Pong Frage Spiele- und Multimedia-Programmierung 17
0x7F800000 allgemeine frage zu Java 3D Spiele- und Multimedia-Programmierung 12
B Frage zur Spielsteuerung bei einem rundenbasiertes Spiel Spiele- und Multimedia-Programmierung 5
G frage zu tutorial Spiele- und Multimedia-Programmierung 3
M Frage eines Anfängers Spiele- und Multimedia-Programmierung 3
N Schiffe Versenken Frage zum Spielbrett Spiele- und Multimedia-Programmierung 24
N Generelle Frage: "GUI"-Werkzeuge Spiele- und Multimedia-Programmierung 5
X Frage zu Import von CAD Zeichnungen Spiele- und Multimedia-Programmierung 4
A kurze Frage zu Java3D! (automatische Skalierung) Spiele- und Multimedia-Programmierung 3
S Poker - grundlegende frage zu paint() Spiele- und Multimedia-Programmierung 10
B Frage zum GUI-Design bei Brettspielen Spiele- und Multimedia-Programmierung 4
P Frage zum Scrolling Spiele- und Multimedia-Programmierung 23
B Frage zum Abspielen von Sounddateien Spiele- und Multimedia-Programmierung 2
J Frage zu Geometry und Shape3D Spiele- und Multimedia-Programmierung 4
J Frage zu Transform3D.mul() Spiele- und Multimedia-Programmierung 2
J Java3D: Texture-Frage Spiele- und Multimedia-Programmierung 4
C frage zu glrotated Spiele- und Multimedia-Programmierung 12
T Einsatzbereich-Frage von Java 3D Spiele- und Multimedia-Programmierung 24
S [Java2D] Performance Frage Spiele- und Multimedia-Programmierung 4
G Frage zur Sichtbarkeit von Flächen Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen

Neue Themen


Oben