Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Hallo,
ich beschäftige mich schon seit längerer Zeit mit dem Vorbis-Format und dem Ogg-Container-Format.
Der Grund: Ich möchte einen kleinen Mediaplayer schreiben, wofür ich gerne die Tags von Ogg-Dateien auslesen will.
Soweit funktioniert erstmal alles nach Plan. Ich habe mir schon eine Methode geschrieben, die den kompletten Vorbis-Stream aus dem Ogg-Container kopiert. Nun möchte ich überprüfen, ob der daraus entstandene Vorbis-Stream abspielbar ist, also ob ich alles richtig gemacht habe. Nur habe ich leider keine Ahnung wie man einen puren Vorbis-Stream abspielt.
Gibt es einen Player der das kann, bzw. geht das überhaupt? Winamp hab ich schon probiert, sowie MediaPlayer Classic.
Meine Test Ogg-Datei hat 2,3 MB, der daraus entpackte Vorbis-Stream nur noch ~780KB. Das macht mich dann schon etwas stutzig... "verbraucht" das Ogg-Containerformat soviel Platz, oder ist doch etwas beim Entpacken verloren gegangen?
Achso: Die Tags die ich im Endeffekt auslesen will, sind im Vorbis-Stream enthalten.
Ich hoffe, dass mir jemand mit Ahnung in diesem Bereich, ein paar Tipps geben kann.
Vielen Dank.
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Hmm... könnte von der Größe her sein, obwohl ich alles nach bestem Wissen aus dem Ogg Container extrahiert habe.
Es ist mir halt nicht klar, ob es korrekt funktioniert hat, deshalb bräuchte ich irgendeine Verifikationsmöglichkeit.
Es würde ja reichen, wenn ich ein anderes Tool finde, das dasselbe macht, und dann könnte ich die entstandene Datei
bitweise auf Gleichheit testen.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Das Ogg Format ist ziemlich klein und hat kaum Metadaten, ich gehe eher davon aus, dass du mal was kräftig falsch gemacht hast.
Vorallem bekommst du ja beim Vorbis codec ein PCM output und kein Vorbis output.
Der PCM output sollte bei weitem größer sein, Frequenz*samples*kanäle und du hast die eigentliche größe, die dir der Vorbis encoder zurück gibt.
Das ganze ohne stream zu lesen geht auch recht einfach, mit stream musst du noch ein paar temporäre variablen halten, die die Sampleposition und die gelesende Samples. Ich empfehle auch dringend Sample Basierdend zu arbeiten und nicht mit Zeit oder Byte. Als ich das Streaming für Arbeit geschrieben habe gab es sync probleme in realtime, wenn man nicht auf Samples gesetzt hat und man hat Vorteile mit dem Speicher, da die Samples immer gleichgroß bleiben. Ausser man hat optimale Frequenzen bei der kompression verwendet, dann wird für eine bestimmte Sampleanzahl immer die geeigneste Frequenz verwendet aber das ist auch wieder ziemlich blöd mit OpenAL und co aus zu machen. Ausserdem müsste man die on the fly konvertieren und das kostet wieder zeit.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
TAK2004 hat geschrieben:
Das Ogg Format ist ziemlich klein und hat kaum Metadaten, ich gehe eher davon aus, dass du mal was kräftig falsch gemacht hast.
Danke, ich bin nochmal alles durchgegangen, und dann ist es mir endlich aufgefallen, dass ich nur den Anfang einer Ogg-Page Reihe auslese... Also den Fall, dass Packets sich über mehrere Ogg-Pages verteilen können, habe ich nur bedingt betrachtet...
So und nun habe ich auch keine so große Datei-Größen Differenz mehr... jetzt sinds nur noch ungefair 40KB Unterschied (bei ner 3MB Datei).
TAK2004 hat geschrieben:
Vorallem bekommst du ja beim Vorbis codec ein PCM output und kein Vorbis output. Der PCM output sollte bei weitem größer sein, Frequenz*samples*kanäle und du hast die eigentliche größe, die dir der Vorbis encoder zurück gibt.
Aber in einem Ogg Container ist doch entweder ein (mehrere) Vorbis-Stream, und/oder ein Theora Stream. Und wenn ich den Vorbis Stream dekodiere bekomme ich doch erst PCM, oder? Ich schicke ja momentan nix durch einen decoder...
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
MatReno hat geschrieben:
TAK2004 hat geschrieben:
Vorallem bekommst du ja beim Vorbis codec ein PCM output und kein Vorbis output. Der PCM output sollte bei weitem größer sein, Frequenz*samples*kanäle und du hast die eigentliche größe, die dir der Vorbis encoder zurück gibt.
Aber in einem Ogg Container ist doch entweder ein (mehrere) Vorbis-Stream, und/oder ein Theora Stream. Und wenn ich den Vorbis Stream dekodiere bekomme ich doch erst PCM, oder? Ich schicke ja momentan nix durch einen decoder...
Das ist richtig.
Ich habe auch ne weile gesucht, bis ich die exakte größe hin bekommen hatte, mir fehlten immer ne hand voll Bytes beim streamen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.