【问题标题】:SMPTE TimeCode from Quick Time来自 Quick Time 的 SMPTE 时间码
【发布时间】:2011-09-05 15:54:39
【问题描述】:

如何获取 QT 电影的时间码开始和持续时间?我发现我必须使用 QTKIt 和 QTStringFromSMPTETime 但我在网上找不到任何示例。

【问题讨论】:

    标签: objective-c xcode cocoa


    【解决方案1】:

    这是一个使用 QTKit 和 QuickTime API 的示例:

    QTTrack * tcTrack = [[self.movie tracksOfMediaType:QTMediaTypeTimeCode] objectAtIndex:0];
    if (tcTrack != nil) {
        QTMedia * media = [tcTrack media];
        if (media != nil) {
            NSLog(@"sample : %@", [media attributeForKey:QTMediaSampleCountAttribute]);
            Media qtMedia = [media quickTimeMedia];
            MediaHandler mh = GetMediaHandler(qtMedia);
            long frameNum;
            TimeCodeDef tcDef;
            TimeCodeRecord tcData;
            UserData srcRefH;
            TCGetTimeCodeAtTime(mh, 0, &frameNum, &tcDef, &tcData, &srcRefH);
            // frameNum holds the frame number since 00:00:00:00
            // tcData holds the HH:MM:SS:FF data
        }
    }
    

    【讨论】:

    • Media、MediaHandler、TimeCodeDef 和 TimeCodeRecord 都产生未声明标识符错误的任何原因?即使包含正确的框架。这些已经成为遗产了吗?
    • 好的,只是想和大家分享一下。显然 Quicktime API 不会在 64 位模式下运行,所以这个示例代码必须在 32 位模式下运行。希望 Apple 尽快更新。
    • 如果有人有幸让它在 64 位环境中工作,我将非常感谢您了解它。
    • 我做到了,但使用的是 AVFoundation 框架。有兴趣就告诉我吧!
    • 我认为 Apple 不会更新 20 年前的 API! QuickTime 是在 90 年代初推出的,永远不会是 64 位的。这就是 Apple 引入 AVFoundation 的原因。现在,您必须要么使用 QTKit 的东西(它不能做任何高级工作),要么坚持使用旧的 API 并使用 32 位。老实说,我现在没有看到不使用 32 位的重要意义......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 2012-07-02
    • 2012-08-18
    • 2018-05-18
    相关资源
    最近更新 更多