You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS中如何通过AVAssetExportSession无损快速导出带叠加层的编辑视频

优化带叠加层视频导出速度的方案(不降低画质)

针对你遇到的导出耗时过长问题,以下是几个不损失画质的优化方向:

1. 更换硬件加速友好的导出预设

你当前使用的AVAssetExportPresetMediumQuality属于软编码压缩预设,速度慢且会牺牲画质。建议改用支持硬件加速的高分辨率HEVC预设——HEVC编码效率远高于H.264,硬件加速下导出速度会显著提升,同时能保留原画质:

// 根据原视频分辨率选择对应预设,示例为1080P HEVC
guard let export = AVAssetExportSession(
    asset: composition,
    presetName: AVAssetExportPresetHEVC1920x1080)
else {
    print("Cannot create export session.")
    onComplete(nil)
    return
}

如果原视频是4K分辨率,替换为AVAssetExportPresetHEVC3840x2160即可。

2. 优化视频合成参数

确保AVMutableVideoComposition的参数与原视频完全匹配,避免额外的缩放、帧率转换操作,减少计算量:

// 从合成轨道中获取原视频的尺寸和帧率
if let videoTrack = composition.tracks(withMediaType: .video).first {
    videoComposition.renderSize = videoTrack.naturalSize
    videoComposition.frameDuration = CMTimeMake(value: 1, timescale: Int32(videoTrack.nominalFrameRate))
}

同时关闭网络优化选项(若不需要针对网络传输优化),减少预处理步骤:

export.shouldOptimizeForNetworkUse = false

3. 改用AVAssetWriter(进阶高效方案)

如果AVAssetExportSession的优化仍达不到预期,直接使用AVAssetWriter可以更精细地控制编码逻辑,强制启用硬件加速:
核心编码参数配置示例:

// 假设已获取原视频尺寸videoSize和轨道videoTrack
let outputSettings: [String: Any] = [
    AVVideoCodecKey: AVVideoCodecType.hevc,
    AVVideoWidthKey: videoSize.width,
    AVVideoHeightKey: videoSize.height,
    AVVideoCompressionPropertiesKey: [
        AVVideoAverageBitRateKey: videoTrack.estimatedDataRate, // 复用原视频码率保证画质
        AVVideoProfileLevelKey: AVVideoProfileLevelHEVCMainAutoLevel,
        AVVideoAllowHardwareAcceleratedVideoEncoderKey: true // 强制开启硬件加速
    ]
]

通过AVAssetWriterInput将合成后的视频帧写入文件,这种方式在处理复杂叠加层时,效率比AVAssetExportSession更高。

4. 细节优化

  • 保持导出路径为本地临时目录(你的代码已使用NSTemporaryDirectory(),无需修改),避免写入iCloud等远程存储拖慢速度;
  • 导出期间尽量避免其他后台任务占用CPU/GPU资源,比如暂停其他视频处理、渲染操作。

内容的提问来源于stack exchange,提问作者Mokshit Gogia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:57:21