2011-02-21 12 views
8

iPadのビデオでさまざまなメタデータアイテムを識別しようとしています。これまでAVATsetライブラリを使ってファイルを見つけ、metadataForFormat:を使ってAVMetadataItemsの配列を生成することができました。このファイルには、iTunesおよびQuicktimeユーザーのデータ形式しか見つかりませんでした。問題は私がその情報を持っていることです、私は何が何であるかを特定する方法がありません。私は、メタデータキーでインデックスされた情報を持つ辞書をロードしようとしましたが、AVMetadataItemのkeyプロパティを使用すると、数値を返すように正しく動作しないように見えます(デバッガはそのNSCFNumberを示します)。iOSのAVAssetのAVMetadataItemでキー名を取得しています

NSLog(@"metadata: %@", meta); 
:読むためのNSLogラインを変更する。なお、

metadata: key = -1452383891 
metadata: key = -1452841618 
metadata: key = 1684370275 
metadata: key = 1818518899 
metadata: key = 1937009003 
metadata: key = -1453101708 

ALAssetRepresentation *representation = [[valAsset defaultRepresentation] retain]; 
NSURL *url = [representation url]; 
AVURLAsset *aAsset = [[AVURLAsset URLAssetWithURL:url options:nil] retain]; 
metaDataDict = [[NSMutableDictionary dictionary] retain]; 
NSArray *fmtmetadata = [aAsset metadataForFormat:@"com.apple.itunes"]; 
for (AVMetadataItem* meta in fmtmetadata) 
{ 
    [metaDataDict setObject:[meta stringValue] 
      forKey:[meta key]]; 
    NSLog(@"metadata: key = %@", [meta key]); 
} 

これは、デバッガコンソールで次のような出力が得られます。ここで私がやっていることのいくつかのサンプルコードです

は次のような出力を返します。

metadata: keySpace=itsk, key=desc, commonKey=(null), locale=(null), value=This is the Description of the Video, time={INVALID}, duration={INVALID}, extras={ 
    dataType = 1; 
} 

何か助けていただければ幸いです!

答えて

10

これらのキーは、ID3タグをコードしているように見える:

1684370275 = 0x64657363 = { 'D'、 'E'、 'S'、 'C​​'}

1818518899 = 0x6C646573 = { 'L' 、 'D'、 'E'、 'S'}

1937009003 = 0x7374696B = { 'S'、 'T'、 'I'、 'K'}等

+0

GREAT、感謝その答えは、私はそれについてデリケートな方法があるのか​​どうか分かりました。 – wideize

+0

うーん...これはテストされていないが、私は 'NSIntegerキーは= [メタキー]のようなものだと思う;' 'NSStringの*キー文字列= [NSStringのstringWithFormat: "%4S" @、&キー]' が動作するはずです。 – tundrabot

+4

ありがとう...ここで私は何をやったのですか: NSUInteger akey = NSSwapInt([(NSNumber *)[meta key] unsignedIntegerValue]); NSString * keyString = [NSString stringWithFormat:@ "%。4s"、&akey]; – wideize

関連する問題