我有一个快速对象,我正在阅读av基础。 我可以看到它的轨道,我希望能够读取'tmcd'轨道(时间码)并将其输出作为我可以在NSTextView中使用的字符串。
使用NSLog和[track formatDescriptions],我看到:
{\ n \ tmediaType:'tmcd'\ n \ tmediaSubType:'tmcd'\ n \ tmediaSpecific:{\ n \ t \ tframeDuration:{1001/24000 = 0.042} \ t \ tframes / sec:24 \ t \ ttcFlags:0 \ n \ t} \ n \ textensions:{{type = immutable dict,count = 1,\ nentries => \ n \ t1:{contents = \“VerbatimSampleDescription \”} = {length = 38, capacity = 38,bytes = 0x00000026746d63640000000000000001 ... 03e918d400000000} \ n} \ n} \ n} \ n“ )
我可以看到那里有很多信息,但我想知道如何使用它。 这是我可以用其他AV Foundation工具分开的东西,还是我需要以某种方式将它拆开?
基本上我想以“00:12:23:12”等格式结束。
谢谢!
亚当
答案 0 :(得分:1)
尝试使用avfprobe。它会为您解码所有曲目信息,包括您在问题中提到的CMFormatDescription
。你会看到这样的事情:
formatDescriptions = [
{
mediaType = kCMMediaType_TimeCode; // = 'tmcd'
mediaSubType = 'tmcd';
extensions = {
VerbatimSampleDescription = <00000022 746d6364 00000000 00000001 00000000 00000002 0000ea60 000003e9 3c00>;
};
},
];
但是,这只是关于时间码轨道的信息 - 而不是轨道的内容。我也没有关于VerbatimSampleDescription
财产内容的更多信息。
答案 1 :(得分:0)
你可以试试这个:
NSArray* arrFormat = [tTrack formatDescriptions];
NSInteger nCountArr = [arrFormat count];
CMTimeCodeFormatDescriptionRef refCmFormat = (__bridge CMTimeCodeFormatDescriptionRef)(arrFormat[0]);
NSDictionary* dictFormat = (__bridge NSDictionary *)(refCmFormat);
NSLog(@"format[%ld] = %@", nCountArr, dictFormat);
在 dictFormat 中,您可以获得不太易读的 formatDescriptions 字符串abobe的键和值。然后看看你需要什么键/值......