Wie man die Länge einer MP3 in C#
Ja, das ist eine exakte Kopie von diese Frage, aber der link gegeben ist, und als Antwort ist nicht für mich arbeiten. Es ist wieder falsche Werte (eine 2 Minuten mp3-gelistet als 1'30, 3 Minuten, 2'20), die keine offensichtliche Muster.
Also hier ist es wieder: wie kann ich die Länge einer MP3 mit C# ?
oder
Was mache ich falsch mit der MP3Header Klasse:
MP3Header mp3hdr = new MP3Header();
bool boolIsMP3 = mp3hdr.ReadMP3Information("1.mp3");
if(boolIsMP3)
Response.Write(mp3hdr.intLength);
- Art der duplizierten Frage; ich versuchte zu Antworten, dass hier: stackoverflow.com/questions/383164/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anscheinend ist diese Klasse berechnet die Dauer mit fileSize /bitRate. Dies kann nur funktionieren, für Konstante bitrate, und ich nehme an, Ihr MP3 hat eine variable bitRate...
EDIT : haben einen Blick auf TagLib Sharp, es kann geben Sie die Dauer
Wie haben Sie ermittelt die Länge von MP3s, die sind "falsch"? Ich habe schon oft festgestellt, dass die header-Informationen kann falsch sein: es gab eine Besondere version von LAME, die dieses problem auch hatten, zum Beispiel.
Wenn Sie bringen die Eigenschaften der Datei im Windows-Explorer, was soll das zeigen?
Ich wickelte mp3-Dekoder-Bibliothek und zugänglich gemacht .net Entwickler. Sie können es hier finden:
http://sourceforge.net/projects/mpg123net/
Enthalten sind die Proben zum konvertieren von mp3-Dateien mit PCM und Lesen von ID3-tags.
Ich denke, dass Sie können es verwenden, zum Lesen von mp3-Datei-Dauer. Schlimmsten Fall wird sein, dass Sie Lesen alle frames und berechnet die Dauer - VBR-Datei.
Genau zu bestimmen, mp3 Dauer, Sie MÜSSEN Lesen Sie alle frames und berechnet die Dauer aus Ihre Dauer summiert. Es gibt viele Fälle, in denen Menschen verschiedene "Metadaten" in der mp3-Datei, so dass, wenn Sie schätzen Sie aus der bitrate und der Dateigröße, wirst du vermutest falsch.
Ich würde mit einer externen Anwendung zu tun. Prüfen Sie, versuchen, Sox und führen Sie einfach die version des Programms, das ausgeführt wird, durch die Verwendung von soxi (keine exe) und Versuch analysieren, dass Ausgabe. Angesichts Ihrer Optionen ich denke, du bist besser dran, nur Vertrauen, jemand anderes hat, verbrachte die Zeit, um herauszufinden, alle die Verrücktheit in mp3-Dateien, wenn diese Funktionalität im Mittelpunkt, was du tust. Viel Glück!
Den zweiten post im thread könnte helfen: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/c72033c2-c392-4e0e-9993-1f8991acb2fd
Länge der VBR-Datei KANN NICHT geschätzt werden, auf alle. Jedes mp3-frame drin sein könnten unterschiedliche bitrate, also von dem Lesen eines Teils der Datei, die Sie nicht wissen können, was die Dichte der Daten auf einen anderen Teil der Datei. Nur die Art und Weise der Bestimmung der GENAUEN Länge von VBR-mp3-Dateien zu DEKODIEREN, die es im ganzen, ODER (wenn man weiß wie) Lesen Sie die überschriften der Bilder eins nach dem anderen, und sammeln Sie Ihre decodiert DAUER.
Verwenden Sie später die Methode nur, wenn die CPU, die Sie verwenden, ist eine kostbare Ressource, die Sie brauchen, zu speichern. Andernfalls decodieren die ganze Datei, und Sie haben die Dauer.
Können Sie meine Hafen von mpg123, um den job tun: http://sourceforge.net/projects/mpg123net/
Mehr: viele mp3-Dateien "Zeug" Hinzugefügt, um es, als id3-tags, und wenn Sie nicht gehen durch alle die Datei, die Sie könnten versehentlich benutzen Sie das tag in der Dauer der Berechnung.
Da ist meine Lösung für C# mit sox sound processing-Bibliothek.