Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


ID3-klass

Postades av 2005-12-30 21:31:07 - Mikael Jönsson, i forum c# (c-sharp), Tråden har 0 Kommentarer och lästs av 459 personer

Hej,

Jag håller just nu på med ID3-klass för att kunna läsa ID3v1/v2-taggar. Jag har efter ett antal tester märkt att programmets minnesanvändning kommer upp i ~200MB när det läser vissa mp3-filer (Bara vissa) och går inte ner igen. Andra program har dock inga problem med att läsa dem så det är förmodligen inga fel på själva filen. Jag har läst specifikationen på http://www.id3.org men har inte sett något som är direkt fel. Hoppas någon kan hjälpa mig med detta... Jag bifogar en del av koden men skulle det behövas så kan jag lägga upp allt.

<code>
FileInfo myFileInfo = new FileInfo(myFileName);
FileStream myFileStream = myFileInfo.Open(FileMode.Open, FileAccess.Read, FileShare.Read);
BinaryReader myBinaryReader = new BinaryReader(myFileStream);

myBinaryReader.BaseStream.Position = 0;

// Check for tag
hasID3v2 = (new string(myBinaryReader.ReadChars(3)) == "ID3");

if(!hasID3v2)
return;

// Read ID3 version
myID3v2Tags.myMajorVersion = myBinaryReader.ReadByte();
myID3v2Tags.myMinorVersion = myBinaryReader.ReadByte();

if(myID3v2Tags.MajorVersion >= 5)
{
hasID3v2 = false;
return;
}

// Read the flags
byte myFlags = myBinaryReader.ReadByte();

// Calculate tag length
int myTagLength = CalculateTagLength(myBinaryReader.ReadBytes(4));

if(myTagLength < myFileStream.Length && myTagLength < 2147483647)
{
while(myFileStream.Position < myTagLength)
{
string myFrameHeaderID = "";
int myFrameLength = 0;
byte[] myFrameHeaderFlags;

if(myID3v2Tags.MajorVersion == 2)
{
myFrameHeaderID = Encoding.ASCII.GetString(myBinaryReader.ReadBytes(3));
myFrameLength = CalculateFrameLength(myBinaryReader.ReadBytes(3));
}
else if(myID3v2Tags.MajorVersion == 3 || myID3v2Tags.MajorVersion == 4)
{
myFrameHeaderID = Encoding.ASCII.GetString(myBinaryReader.ReadBytes(4));
myFrameLength = CalculateFrameLength(myBinaryReader.ReadBytes(4));
myFrameHeaderFlags = myBinaryReader.ReadBytes(2);
}
else
{
hasID3v2 = false;
return;
}

if(myFrameHeaderID.Trim().Length <= 0 || myFrameLength <= 0)
return;

byte myFrameEncoding = myBinaryReader.ReadByte();
string myFrameInfo = "";

if(myFrameHeaderID == "COMM")
{
string myLanguage = Encoding.UTF7.GetString(myBinaryReader.ReadBytes(4));
myFrameInfo = Encoding.UTF7.GetString(myBinaryReader.ReadBytes(myFrameLength - 5));
}
else
{
myFrameInfo = Encoding.UTF7.GetString(myBinaryReader.ReadBytes(myFrameLength - 1));
}

if(myFrameInfo.Trim().Length > 0)
{
switch(myFrameHeaderID)
{
// MajorVersion = 2
case "TP1": myID3v2Tags.Artist = myFrameInfo; break;
case "TT2": myID3v2Tags.Title = myFrameInfo; break;
case "TAL": myID3v2Tags.Album = myFrameInfo; break;
case "TCO": myID3v2Tags.Genre = myFrameInfo; break;
case "COM": myID3v2Tags.Comment = myFrameInfo; break;
case "TYE": myID3v2Tags.Year = myFrameInfo; break;
case "TRK": myID3v2Tags.Track = myFrameInfo; break;

// MajorVersion > 2
case "TPE1": myID3v2Tags.Artist = myFrameInfo; break;
case "TIT2": myID3v2Tags.Title = myFrameInfo; break;
case "TALB": myID3v2Tags.Album = myFrameInfo; break;
case "TCON": myID3v2Tags.Genre = myFrameInfo; break;
case "COMM": myID3v2Tags.Comment = myFrameInfo; break;
case "TYER": myID3v2Tags.Year = myFrameInfo; break;
case "TRCK": myID3v2Tags.Track = myFrameInfo; break;
}
}
}
}
else
{
hasID3v2 = false;
}

myBinaryReader.Close();
myBinaryReader = null;

myFileStream.Close();
myFileStream = null;

myFileInfo = null;
</code>

/Micke


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
2 064
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies