在AVAsset导入GoPro .mp4文件之前,将该文件转换为MOV格式,并将视频轨道从H.264编解码器转换为ProRes编解码器。这样将在AVAsset中正确地显示所有轨道。
代码示例:
//输入GoPro .mp4文件路径 let inputUrl = Bundle.main.url(forResource: "myVideoClip", withExtension: "mp4")!
//将视频文件从H.264编码转换为ProRes编码 let avAsset = AVURLAsset(url: inputUrl) let exportSession = AVAssetExportSession(asset: avAsset, presetName: AVAssetExportPresetProRes422HQ) let outputFileUrl = URL(fileURLWithPath: NSTemporaryDirectory() + "temp.mov") exportSession?.outputURL = outputFileUrl exportSession?.outputFileType = AVFileTypeQuickTimeMovie exportSession?.exportAsynchronously(completionHandler: { if exportSession?.status == .completed { //导入转换后的视频文件 let avAsset = AVURLAsset(url: outputFileUrl) //此时可以在AVAsset中正确地显示所有轨道 } })