在AVMutableComposition中使用AVMutableCompositionTrack合并video和图像,而不是AVVideoCompositionCoreAnimationTool?

以下代码使用AVMutableComposition导出video。 但在导出的video中,如果要在源video结束后显示图像3秒钟,是否有办法使用AVMutableCompositionTrack执行该操作,还是需要在video结束后添加图像层并为其外观制作animation?

最终目标是将任意数量的图像和video合并为一个主video。

不幸的是,在testing期间, AVVideoCompositionCoreAnimationTool似乎严重降低了导出过程(从<1秒到10-20秒),因此如果可能的话,目标是避免AVVideoCompositionCoreAnimationTool

  // Create composition object let composition = AVMutableComposition() let compositionVideoTrack = composition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID(kCMPersistentTrackID_Invalid)) let compositionAudioTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID(kCMPersistentTrackID_Invalid)) var insertTime = kCMTimeZero // Extract tracks from slice video let videoURL = NSURL(fileURLWithPath: videoPath) let videoAsset = AVURLAsset(URL: videoURL, options: nil) let sourceVideoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0] let sourceAudioTrack = videoAsset.tracksWithMediaType(AVMediaTypeAudio)[0] do { try compositionVideoTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), ofTrack: sourceVideoTrack, atTime: kCMTimeZero) try compositionAudioTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), ofTrack: sourceAudioTrack, atTime: kCMTimeZero) } catch { print("Error with insertTimeRange while exporting video: \(error)") } // Export composition to video let outputURL = getFilePath(getUniqueFilename(gMP4File)) let exporter = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality) exporter!.outputURL = NSURL(fileURLWithPath: outputURL) exporter!.outputFileType = AVFileTypeMPEG4 exporter!.exportAsynchronouslyWithCompletionHandler({ self.exportDidFinish(exporter!) }) 

在咨询其他人并进行更多networking研究之后,似乎这是不可能的。 将图像与video合并为可从应用中播放的主video似乎需要AVVideoCompositionCoreAnimationTool。