AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi TMediaplayer spielt keine MP3s mit MPEGInfo.Frame.Position >
Thema durchsuchen
Ansicht
Themen-Optionen

TMediaplayer spielt keine MP3s mit MPEGInfo.Frame.Position >

Ein Thema von Cylence · begonnen am 3. Nov 2009 · letzter Beitrag vom 5. Nov 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#11

Re: TMediaplayer spielt keine MP3s mit MPEGInfo.Frame.Positi

  Alt 4. Nov 2009, 13:19
Das war ein Tippfehler, natürlich war v2 gemeint, nicht v1. Habs oben mal geändert und ne Anmerkung dazugeschrieben. Und die Nullbytes da waren definitiv fehl am Platze
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: TMediaplayer spielt keine MP3s mit MPEGInfo.Frame.Positi

  Alt 4. Nov 2009, 15:00
Also den Fehler habe ich gefunden, lag nicht an ID3v2.4. Wie er entsteht, weiß ich aber nicht - da wird wohl der Encoder irgendwie Mist gebaut haben.

Wie schon herausgefunden, beginnt der erste MPEG-Frame 10 Bytes nach dem Ende des ID3v2-Tags. Das ist zwar unschön, aber damit sollte ein Player eigentlich klar kommen. Problem ist wohl, dass die ersten 4 Bytes ein gültiger MPEG-Header sind. Und zwar ist das eine Kopie des Headers des MPEG-Frames, in dem der XING-Header steckt.

Hab mal ein Screenshot von HxD angehängt. Oben der Rest vom ID3-Tag, mit ein paar Nullbytes. Dann die Folge FF FB 90 04. Das ist ein gültiger MPEG-Frameheader. Allerdings kommt dahinter nicht ein passend großer MPEG-Frame, sondern nur 6 Nullbytes. Der darauf folgende Frame stimmt - dass da auch viele Nullen stehen liegt daran, das das kein echter Mpeg-Frame ist, sondern der Xing-Header, der sich in einem solchen versteckt (da stehen Infos bzgl. variabler Bitrate drin). Die eigentliche Audio-Information beginnt dann nach dem großen 0-Block mit FF FE 10 04

Ein sauberes Reparieren der Datei besteht also darin, die 10 gelb markierten Bytes in der Datei zu löschen. Ich hoffe, dass dieser Parser genau das macht, also defekte Frames aussortiert.

@Nullbytes: das kann auch sein, aber generell sollte man damit aufpassen. Sowas kann passieren, wenn ein Tagger einen alten Tag schnell löscht (d.h. mit Nullen auffüllt), und dann einen neuen schreibt, ohne diese Nullen passend zu verarbeiten.


edit: Ich sollte erst E-Mails abrufen, dann hier posten. Die Datei in der zweiten Mail funktioniert aber einwandfrei, oder? Da steckt dieser Fehler nämlich nicht drin.
Miniaturansicht angehängter Grafiken
mp3_108.png  
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#13

Re: TMediaplayer spielt keine MP3s mit MPEGInfo.Frame.Positi

  Alt 4. Nov 2009, 15:21
10 Bytes? Das riecht ja fast nach Platz für nen ID3 Tag Footer
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: TMediaplayer spielt keine MP3s mit MPEGInfo.Frame.Positi

  Alt 4. Nov 2009, 15:25
Hatte ich zuerst auch im Verdacht, aber diese 10 Bytes zwischen Tag-Ende und Mpeg-Frame haben mit nem ID3-Footer leider nichts zu tun. Das ist einfach Datenmüll, vermutlich verursacht vom Encoder oder einem fehlerhaften Tagger. Ein früher mal vorhandener Footer könnte dann durchaus Ursache des Problems sein. Da ist der Tagger darüber gestolpert und hat diese 10 Bytes da doppelt kopiert, worüber jetzt der Player stolpert. Oder so.
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: TMediaplayer spielt keine MP3s mit MPEGInfo.Frame.Positi

  Alt 5. Nov 2009, 07:18
Hi,

die 2te mp3 ist eine mit einem PNG Cover in den Tags, die kann auch bei einigen Playern nicht abgespielt werden, wie TMediaplayer, DSPack basierende Player, wenn nicht der mp3 parser oder ein alternativer parser installiert ist.
Auf Deinem Bild sieht man das die Datei mit Lame 3.97 erstellt wurde, evtl war das auch noch ein bug von der Version, ist ja nicht mehr die aktuellste so viel ich weiß gibts mindestens Version 3.99 schon.

http://www.free-codecs.com/download/Lame_Encoder.htm

bzw ne beta von 4.0

Kann man das nun per Delphi Code reparieren? Hat jemand eine Idee? So viel kenn ich mich leider nicht aus mit headern usw...

Gruß

tom

ps eben gesehen in der history von lame:

LAME 3.98 beta 1 May 16 2007

Bug tracker item: [ 1711980 ] LAME writes invalid Xing header when ID3 tags exist; LAME was sometimes writing an invalid Xing/Info header


und noch viele weitere bugfixes bezüglich xing header usw...also evtl kommt das von der lame dll v 3.97
Tom
Just DO it
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz