gpt4 book ai didi

objective-c - 如何将 CMTime 添加到 NSMutableDictionary?

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:43 24 4
gpt4 key购买 nike

我目前正在尝试将一些视频剪辑设置添加到 NSMutableDictionary,包括两个 CMTime 对象。

我正在尝试存储正在使用的视频流(用整数表示)、剪辑持续时间 (CMTime) 和剪辑开始时间 (CMTime),它们在代码的其他地方定义。

我可能有点傻,但我不知道如何将 CMTimes 添加到字典中,我收到“将‘CMTime’发送到不兼容类型‘id’的参数”错误。

我尝试了 setObject 和 setValue 都没有成功,而且在任何地方都找不到答案。

NSMutableDictionary *clipDetails = [NSMutableDictionary dictionary];
[clipDetails setObject:[NSNumber numberWithInteger:currentStream] forKey:@"stream"];
[clipDetails setObject:startTime forKey:@"clipStart"];
[clipDetails setObject:duration forKey:@"duration"];

最佳答案

由于 CMTime 是一个结构体,您需要将其包装在 Objective C 类型中,通常使用 NSValue:

CMTime startTime = (...);
NSValue *startValue = [NSValue valueWithBytes:&startTime objCType:@encode(CMTime)];
[clipDetails setObject:startValue forKey:@"startTime"];

你可以像这样再次取出它:

CMTime startTime;
NSValue *startValue = [clipDetails objectForKey:@"startTime"];
[startValue getValue:&startTime];

旁注,使用新的字典语法更容易:

clipDetails[@"startTime"] = ...;
NSValue *value = clipDetails[@"startTime"];

这些步骤适用于任何结构;事实证明,AVFoundation 框架为 CMTime 结构提供了方便的方法:

clipDetails[@"startTime"] = [NSValue valueWithCMTime:startTime];
CMTime startTime = [clipDetails[@"startTime"] CMTimeValue];

关于objective-c - 如何将 CMTime 添加到 NSMutableDictionary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com