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

NSTimeInterval start = [[NSDate date] timeIntervalSince1970];
NSTimeInterval end = [[NSDate date] timeIntervalSince1970];

我用于导出会话的代码如下:
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetHighestQuality];

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

谢谢你的帮助!

最佳答案

timeRange中的AVAssetExportSession属性使您可以部分导出资产,以指定从何处开始和持续时间。如果未指定,它将导出整个视频,换句话说,它将从零开始并导出总时长。

开始和持续时间均应表示为CMTime

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

CMTime half = CMTimeMultiplyByFloat64(exportSession.asset.duration, 0.5);
exportSession.timeRange = CMTimeRangeMake(kCMTimeZero, half);

或下半场:
exportSession.timeRange = CMTimeRangeMake(half, half);

或最后10秒:
CMTime _10 = CMTimeMakeWithSeconds(10, 600);
CMTime tMinus10 = CMTimeSubtract(exportSession.asset.duration, _10);
exportSession.timeRange = CMTimeRangeMake(tMinus10, _10);

检查CMTime参考以获取其他方法来计算所需的确切时间。

07-28 11:16