Ios 我可以使用AVURLAsset将视频和音频导出到MP4吗?

Ios 我可以使用AVURLAsset将视频和音频导出到MP4吗?,ios,swift,audio,video,Ios,Swift,Audio,Video,我正在使用代码使用avurlaste()打开视频资源,然后对视频进行水印处理,并使用AVAssetExportSession()保存它 在我打开视频之前,它有声音,当我使用AVAssetExportSession()导出它时,声音会丢失 下面是我运行代码的方式 let videoAsset = AVURLAsset(URL: passedVideoURL) let mixComposition = AVMutableComposition() let compositionVideoTrack

我正在使用代码使用avurlaste()打开视频资源,然后对视频进行水印处理,并使用AVAssetExportSession()保存它

在我打开视频之前,它有声音,当我使用AVAssetExportSession()导出它时,声音会丢失

下面是我运行代码的方式

let videoAsset = AVURLAsset(URL: passedVideoURL)

let mixComposition = AVMutableComposition()
let compositionVideoTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: kCMPersistentTrackID_Invalid)
let clipVideoTrack: AVAssetTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo)[0]

do {
    try compositionVideoTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), ofTrack: clipVideoTrack, atTime: kCMTimeZero)
} catch {
    print(error)
}

let parentLayer = CALayer()
let videoLayer = CALayer()
parentLayer.frame = CGRectMake(0, 0, videoSize.height, videoSize.width)
videoLayer.frame = CGRectMake(0, 0, videoSize.height, videoSize.width)
parentLayer.addSublayer(videoLayer)
parentLayer.addSublayer(aLayer)


let videoComp = AVMutableVideoComposition()
videoComp.renderSize = CGSize(width: videoSize.height, height: videoSize.width)
videoComp.frameDuration = CMTimeMake(1,30)
videoComp.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videoLayer, inLayer: parentLayer)

if let exporter = AVAssetExportSession(asset: mixComposition, presetName: AVAssetExportPresetHighestQuality) {
exporter.outputURL = completeMovieUrl
exporter.shouldOptimizeForNetworkUse = true
exporter.outputFileType = AVFileTypeMPEG4
exporter.videoComposition = videoComp
exporter.exportAsynchronouslyWithCompletionHandler({ () -> Void in
            switch exporter.status {
            case  .Failed:
                print("failed \(exporter.error)")
                //completion(url: nil)
                break
            case .Cancelled:
                print("cancelled \(exporter.error)")
                //completion(url: nil)
                break
            default:
                print("complete")

                let u = exporter.outputURL?.path
                self.dataToPass = NSData(contentsOfFile: u!)!

                //try NSFileManager.removeItemAtPath(u)

                self.performSegueWithIdentifier("sendToFriend", sender: self)

            }
        })
    }
对我来说,似乎我需要导出音频,然后将其合并回视频?我不知道该怎么做。任何方向都非常感谢

谢谢大家!