Probleme Cocoa App und libid3

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme Cocoa App und libid3

    Hallo zusammen,

    so ich habe folgendes Problem:

    Ich habe ein Cocoa Projekt mit Xcode angelegt und die libid3.a auch eingebunden. Das lief auch alles soweit wunderbar. Da dachte ich mir super größte Hürde genommen. Dann habe ich mal testweise ne Klasse angelegt, mit der ich die einzelnen Tags einer MP3 auslesen kann.

    Quellcode

    1. - (NSMutableArray*)createMP3FileItemsWithPaths:(NSArray*)paths{
    2. NSMutableArray* mp3FileItems = [NSMutableArray array];
    3. for (NSString* path in paths) {
    4. MP3FileItem* item = [MP3FileItem mp3FileItemWithPath:path];
    5. ID3_Tag* id3Tag = new ID3_Tag([path UTF8String]);
    6. item.title = [self title:id3Tag];
    7. item.artist = [self artist:id3Tag];
    8. [mp3FileItems addObject:item];
    9. }
    10. return mp3FileItems;
    11. }
    12. - (NSString*)artist:(ID3_Tag*)id3Tag{
    13. ID3_Frame *artistFrame = id3Tag->Find(ID3FID_LEADARTIST);
    14. NSString* result = @"";
    15. if (NULL != artistFrame) {
    16. ID3_Field *artistStringField = artistFrame->GetField(ID3FN_TEXT);
    17. const char* rawText = "";
    18. if (NULL != artistStringField) {
    19. rawText = artistStringField->GetRawText();
    20. if (NULL == rawText) {
    21. result = @"";
    22. }else{
    23. result = [NSString stringWithUTF8String:rawText];
    24. }
    25. }
    26. }
    27. return result;
    28. }
    29. - (NSString*)title:(ID3_Tag*)id3Tag{
    30. ID3_Frame *titleFrame = id3Tag->Find(ID3FID_TITLE);
    31. NSString* result = @"";
    32. if (NULL != titleFrame) {
    33. ID3_Field *titleStringField = titleFrame->GetField(ID3FN_TEXT);
    34. const char* rawText = "";
    35. if (NULL != titleStringField) {
    36. rawText = titleStringField->GetRawText();
    37. if (NULL == rawText) {
    38. result = @"";
    39. }else{
    40. result = [NSString stringWithUTF8String:rawText];
    41. }
    42. }
    43. }
    44. return result;
    45. }
    Alles anzeigen



    Naja code lies sich compilen und ausführen, dann habe ich mal eine Mp3 genommen, die aus dem iTunes Store runtergeladen habe und wollte sie einmal durchparsen. Zack meine Anwendung ist abgestürzt, weil er ein Fehler beim Parsen hat. dann habe ich mal verschiedene MP3's genommen, die ich von amazon runtergeladen hatte. Teilweise stürzte die Anwendung auch dabei ab oder konnte die Tags nicht lesen also getRawText gab mir nil zurück. Bei Mp3's die ich von einer CD direkt gerippt habe, funktionierte es dagegen sofort. Auch bei Liedern die von Saturn MP3 heruntergeladen habe.

    Jetzt meine Frage: Konnte jemand anderes diesen Fehler auch beobachten. Kennt jemand den Grund warum diese Mp3's nicht geparst werden können? Mach ich sogar etwas falsch?
    Kennt jemand eine Möglichkeit wie das Abstürzen der Anwendung zumindestens verhindern kann?

    Gruß
    MasterOP22