AVAssetExportSession
符号
实例化一个 session
// 通过指定一个 asset 和 present 实例化一个输出 session
init?(asset: AVAsset, presetName: String)
配置 output
// 输出的 output 的 url
var outputURL: URL?
// 支持的文件类型
var supportedFileTypes: [String]
// 通过 session 写的文件类型
var outputFileType: String?
// 文件长度限制,表明 session 输出是文件长度不会超过这个限制
//
var fileLengthLimit: Int64
// 输出的时间范围
var timeRange: CMTimeRange
// 通过 session 写入到文件的元数据
var metadata: [AVMetadataItem]?
// 元数据过滤器
var metadataItemFilter: AVMetadataItemFilter?
var audioMix: AVAudioMix?
var audioTimePitchAlgorithm: String
var shouldOptimizeForNetworkUse: Bool
var videoComposition: AVVideoComposition?
var customVideoCompositor: AVVideoCompositing?
var canPerformMultiplePassesOverSourceMediaData: Bool
var directoryForTemporaryFiles: URL?
输出预设
var presetName: String
class func allExportPresets()
class func exportPresets(compatibleWith: AVAsset)
class func determineCompatibility(ofExportPreset: String,
with: AVAsset,
outputFileType: String?,
completionHandler: (Bool) -> Void)
func determineCompatibleFileTypes(completionHandler: ([String]) -> Void)
输出
func exportAsynchronously(completionHandler: () -> Void)
func cancelExport()
var error: Error?
var estimatedOutputFileLength: Int64
var maxDuration: CMTime
输出状态
var progress: Float
var status: AVAssetExportSessionStatus
获取资源
var asset: AVAsset
常量
// 导出状态
AVAssetExportSessionStatus
case unknown // 导出状态是未知的
case waiting // session 等待去导出更多数据
case exporting // 表明 session 正在输出
case completed // 表明 session 已经完成输出
case failed // 表明 session 已取消
case cancelled // 表明 session 已经取消
// 输出预设(设备匹配(适应的)的 quickTime files)
Export Preset Names for Device-Appropriate QuickTime Files
你可以使用这些输出选项去产出 QuickTime.mov 文件, 视频尺寸要适应当前的设备。
输出将不会缩放来自一个小尺寸的视频,视频压缩使用的是 h.264,音频是使用 acc 进行压缩。
let AVAssetExportPresetLowQuality: String // 低质量
let AVAssetExportPresetMediumQuality: String // 中等质量
let AVAssetExportPresetHighestQuality: String // 高等质量
// quickTime 文件输出预设的给定的尺寸
Export Preset Names for QuickTime Files of a Given Size
let AVAssetExportPreset640x480: String // 640x480
let AVAssetExportPreset960x540: String // 960x540
let AVAssetExportPreset1280x720: String // 1280x720
let AVAssetExportPreset1920x1080: String // 1920x1080
let AVAssetExportPreset3840x2160: String // 3840x2160
// iTunes audio 的输出预设
Export Preset Name for iTunes Audio
你使用输出选项去产出一个 .m4a 的音频文件。适当的iTunes无缝播放数据。
let AVAssetExportPresetAppleM4A: String
// apple 设备的 输出预设
Export Preset Names for Apple Devices
你使用这些选项去产出一个能在指定 apple 设备的文件。
这些预设只在 macOS 中有效.
文件将会有一个 .m4v 文件(或者是 .m4a )
let AVAssetExportPresetAppleM4VCellular: String
let AVAssetExportPresetAppleM4ViPod: String
let AVAssetExportPresetAppleM4V480pSD: String
let AVAssetExportPresetAppleM4VAppleTV: String
let AVAssetExportPresetAppleM4VWiFi: String
let AVAssetExportPresetAppleM4V720pHD: String
let AVAssetExportPresetAppleM4V1080pHD: String
let AVAssetExportPresetAppleProRes422LPCM: String