0

我有一个正在使用 av 基础阅读的 quicktime 对象。我可以看到它的轨道,我希望能够读取“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\texttensions: {{type = immutable dict, count = 1,\nentries =>\n\t1 : {contents = \"VerbatimSampleDescription\"} = {length = 38, capacity = 38,字节 = 0x00000026746d63640000000000000001 ... 03e918d400000000}\n}\n}\n}")

我可以看到那里有很多信息,但我想知道如何使用它。这是我可以与其他 AV Foundation 工具分开的东西,还是我需要以某种方式将其分开?

基本上我想以“00:12:23:12”之类的格式结束

谢谢!

亚当

4

2 回答 2

1

尝试使用avfprobe。它将为您解码所有轨道信息,包括CMFormatDescription您在问题中提到的信息。你会看到这样的东西:

formatDescriptions = [
    {
        mediaType = kCMMediaType_TimeCode; // = 'tmcd'
        mediaSubType = 'tmcd';
        extensions = {
            VerbatimSampleDescription = <00000022 746d6364 00000000 00000001 00000000 00000002 0000ea60 000003e9 3c00>;
        };
    },
    ];

然而,这只是关于时间码轨道的信息——而不是轨道的内容。我也没有关于该VerbatimSampleDescription物业内容的更多信息。

于 2016-07-17T16:34:27.197 回答
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 的键和值。然后看看,你需要什么键/值...

于 2013-05-28T07:47:07.270 回答