【问题标题】:Merge videos & images in AVMutableComposition using AVMutableCompositionTrack, not AVVideoCompositionCoreAnimationTool?使用 AVMutableCompositionTrack 合并 AVMutableComposition 中的视频和图像,而不是 AVVideoCompositionCoreAnimationTool?
【发布时间】:2016-04-28 12:45:04
【问题描述】:

下面的代码使用AVMutableComposition 导出视频。但是在导出的视频中,如果您希望图像在源视频结束后显示 3 秒,有没有办法使用AVMutableCompositionTrack 来做到这一点,或者您是否需要添加图像层并在视频结束后为其外观设置动画?

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

不幸的是,在测试期间,AVVideoCompositionCoreAnimationTool 似乎严重减慢了导出过程(从 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!)
    })

【问题讨论】:

    标签: ios swift video avfoundation avmutablecomposition


    【解决方案1】:

    在咨询了其他人关于 SO 并进行了更多的网络研究之后,这似乎是不可能的。将图像与视频合并为可在应用外播放的主视频似乎需要 AVVideoCompositionCoreAnimationTool。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多