iPhone アプリの .mp3 ファイルからメタデータ情報を抽出しようとしています。私はこのAVAsset
ように使用しようとしました.それは機能しませんでした.共通のメタデータは空です. しかし、Audacity とアプリ ストアの別の iOS アプリは、メタ データの詳細を取得できます。どうしてか分かりません?。
AudioToolBox
そのため、フレームワーク を使用して以下のコードで同じものを抽出しようとしました
CFDictionaryRef piDict = nil;
UInt32 piDataSize = sizeof(piDict);
// Populates a CFDictionary with the ID3 tag properties
err = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &piDict);
if(err != noErr) {
NSLog(@"AudioFileGetProperty failed for property info dictionary");
return nil;
}
// Toll free bridge the CFDictionary so that we can interact with it via objc
NSMutableDictionary* nsDict = [(__bridge NSDictionary*)piDict mutableCopy];
これにより、アルバム アート以外のすべてが返されました。でアルバムアートを抽出しようとすると、kAudioFilePropertyAlbumArtwork
エラーosstatus
(操作を完了できませんでした)が発生しました。
ObjC
最後に、 libId3(ここにあります)のラッパーで運試しをしました。それは完全にうまくいきました。作品を手に入れることができました。
私の質問は、なぜAVAsset
データを取得できなかったのですか?. 私はそこに何が欠けていますか?. 誰かがそれを機能させることができましたか?. サンプルをいただければ幸いです。
kAudioFilePropertyAlbumArtwork
抽出を完了できなかったのはなぜですか?. 両方の問題は、私が持っていたすべての .mp3 ファイルで発生しました。
ソリューションの更新:
AVAsset
を使用して URL を作成したため、うまくいきませんでした
[NSURL URLWithString:[filePath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]
それよりも
NSURL *fileURL = [NSURL fileURLWithPath:filePath];