我有4个视频文件,我已编辑并添加到一个可变的作文。我试图用出口会话但是导出的文件,当我出口中,只有第一条轨道在下面的曲目列表被出口导出多个曲目:AVMutableComposition和AVAssetExportSession
<AVAssetExportSession: 0x60800001da50, asset = <AVMutableComposition: 0x6080002240a0 tracks = (
"<AVMutableCompositionTrack: 0x600000224ca0 trackID = 1, mediaType = vide, editCount = 8>",
"<AVMutableCompositionTrack: 0x600000226da0 trackID = 2, mediaType = vide, editCount = 10>",
"<AVMutableCompositionTrack: 0x60000023e180 trackID = 3, mediaType = vide, editCount = 3>",
"<AVMutableCompositionTrack: 0x60000023e500 trackID = 4, mediaType = vide, editCount = 7>"
)>, presetName = AVAssetExportPreset1280x720, outputFileType = (null)
用的TrackID = 1被导出只有第一个轨道。这里是出口会话来源:
// Create path to output file
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:
[NSString stringWithFormat:@"ProcessedVideo-%d.mov", arc4random() % 1000]];
NSURL *url = [NSURL fileURLWithPath:myPathDocs];
AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:batchComposition presetName:AVAssetExportPreset1280x720];
NSLog(@"%@", exporter);
exporter.outputURL = url;
exporter.outputFileType = AVFileTypeQuickTimeMovie;
[exporter exportAsynchronouslyWithCompletionHandler:^(void) {
switch (exporter.status) {
case AVAssetExportSessionStatusCompleted:
NSLog(@"Completed");
break;
case AVAssetExportSessionStatusFailed:
NSLog(@"Failed:%@",exporter.error);
break;
case AVAssetExportSessionStatusCancelled:
NSLog(@"Canceled:%@",exporter.error);
break;
default:
break;
}
}];
没有人有任何想法如何,我可以得到所有4个曲目导出到使用导出会话建立一个.mov文件?
理想情况下,我想要做的是将这4个轨道导出到一个视频输出而不是4个独立的视频文件。 – Edwin 2014-10-02 15:35:02
您可以将4首曲目合并为一个合成文件并导出到一个文件,但无论您使用哪个播放器播放该文件,都必须能够解释具有多个视频轨道的视频文件。我相信iOS中的照片应用只会播放一首曲目,您无法在曲目之间切换。 – jlw 2014-10-02 15:36:42
我在Mac上使用QuickTime播放器。我认为这将能够顶级播放多首曲目? – Edwin 2014-10-02 15:48:55