私のアプリでは、デバイスのカメラを使用してビデオを録画し、AVCaptureSession
保存しています。簡単に言えば、この記録されたクリップの最初の x 秒を切り取れるようにする必要があります。ユーザーに「ビデオの編集」ビューを表示したくありません。これは、言うごとに「固定」された時間ではありませんが、1 日の終わりにはCMTime
、値がクリップの最初から正確にどれだけ切り取らなければならないか。私はAVAssetWriter
などを見てきましたが、運がありません。再生の場合[player seekToTime:time];
はうまくいくと思いますが、実際のビデオのtime
長さを短くして、最初から切り取る必要があります。これに関するドキュメントはどこで入手できますか?
質問する
524 次
1 に答える
0
AVMutableComposition を試しましたか? ただし、処理時間はかかります。何かのようなもの:
// get your asset
AVAsset *asset = [AVAsset assetWithURL:yourURL];
// get asset tracks
AVAssetTrack *assetTrackVideo = [[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
AVAssetTrack *assetTrackAudio = [[asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
// create composition
AVMutableComposition *composition = [AVMutableComposition composition];
AVMutableCompositionTrack *trackVideo = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *trackAudio = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
// YOUR_DURATION is something like CMTimeSubstruct(asset.duration, YOURTIME_START);
[trackVideo insertTimeRange:CMTimeRangeMake(YOURTIME_START, YOUR_DURATION)
ofTrack:assetTrackVideo
atTime:kCMTimeZero
error:nil];
[trackAudio insertTimeRange:CMTimeRangeMake(YOURTIME_START, YOUR_DURATION)
ofTrack:assetTrackAudio
atTime:kCMTimeZero
error:nil];
// do the orientation change if needed
NSString* filename = [NSString stringWithFormat:@"videoFileName-%d.mov",arc4random() % 1000];
NSString* path = [NSTemporaryDirectory() stringByAppendingPathComponent:filename];
NSURL *exporterURL = [NSURL fileURLWithPath:path];
// Create exporter
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality];
exporter.outputURL = exporterURL;
exporter.outputFileType = AVFileTypeQuickTimeMovie;
exporter.shouldOptimizeForNetworkUse = YES;
[exporter exportAsynchronouslyWithCompletionHandler:^{
// NSLog(@"Finished Output composition with error '%@' reason '%@'", exporter.error.localizedDescription,exporter.error.localizedFailureReason);
}];
于 2013-08-16T01:51:10.343 に答える