6

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);

ご協力いただきありがとうございます!

4

1 に答える 1

14

のプロパティtimeRangeAVAssetExportSession使用すると、開始位置と期間を指定して、アセットの部分的なエクスポートを実行できます。指定しない場合、ビデオ全体がエクスポートされます。つまり、ゼロから開始され、合計時間がエクスポートされます。

start と duration の両方を として表す必要があります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必要な正確なタイミングを計算する他の方法については、参照を確認してください。

于 2012-05-27T10:46:44.273 に答える