首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为AVAssetExportSession创建时间范围

为AVAssetExportSession创建时间范围
EN

Stack Overflow用户
提问于 2012-05-27 17:36:53
回答 1查看 4.1K关注 0票数 6

我想知道如何根据时间戳为AVAssetExportSession设置一个时间范围,例如:

代码语言:javascript
复制
NSTimeInterval start = [[NSDate date] timeIntervalSince1970];
NSTimeInterval end = [[NSDate date] timeIntervalSince1970];

我在导出会话中使用的代码如下:

代码语言:javascript
复制
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];

exportSession.outputURL = videoURL;
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
exportSession.timeRange = CMTimeRangeFromTimeToTime(start, end);

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-27 18:46:44

AVAssetExportSession中的属性timeRange允许您执行资产的部分导出,指定从何处开始以及持续时间。如果没有指定,它将导出整个视频,换句话说,它将从零开始并导出总时长。

start和duration都应该用CMTime表示。

例如,如果要导出资源的前半部分:

代码语言:javascript
复制
CMTime half = CMTimeMultiplyByFloat64(exportSession.asset.duration, 0.5);
exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, half);

或者是下半场:

代码语言:javascript
复制
exportSession.timeRange = CMTimeRangeMake(half, half);

或结尾的10秒:

代码语言:javascript
复制
CMTime _10 = CMTimeMakeWithSeconds(10, 600);
CMTime tMinus10 = CMTimeSubtract(exportSession.asset.duration, _10);
exportSession.timeRange = CMTimeRangeMake(tMinus10, _10);

有关计算所需确切时间的其他方法,请查看CMTime参考。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10772992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档