Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 13, 2025 13:09

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Puren Vorbis-Stream abspielen
BeitragVerfasst: Fr Nov 14, 2008 19:39 
Offline
DGL Member
Benutzeravatar

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.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 15, 2008 10:09 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
Have a look at my OpenAL site: http://www.noeska.com/doal/

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 15, 2008 10:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Thanks noeska!
I'll give it a shot. :)

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 15, 2008 10:31 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Vllt ist das orginal stereo und dein extrahierter stream nur noch mono?

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Nov 15, 2008 11:14 
Offline
DGL Member
Benutzeravatar

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.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 17, 2008 10:11 
Offline
DGL Member
Benutzeravatar

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

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 17, 2008 20:16 
Offline
DGL Member
Benutzeravatar

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... :oops:

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

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 18, 2008 12:35 
Offline
DGL Member
Benutzeravatar

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

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 18, 2008 18:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 01, 2003 18:59
Beiträge: 887
Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
if you need an example: http://www.noeska.net/downloads/oggstream.zip

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]