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.