libc ++ abi.dylib:以NSException类型的未捕获异常终止(AVAsset将视频和音频合并为一个视频)

时间:2018-07-11 14:14:15

标签: ios iphone swift xcode swift4

我正面临着这个非常奇怪的问题。我试图在触摸按钮时合并视频轨道和音频轨道。第一次触摸按钮时,它将开始同时录制视频和音频(由于某些原因,我需要分别录制它们),而第二次,它停止录制并创建两个指向视频和音频的URL 。

这是奇怪的事情。当我像这样将函数放在一起时:

@objc func touchCameraButton(){

    if isVideoRecordingOn{

        if isFirstTouch{
            startCapture()
            recordAudio()
            isFirstTouch = false
        }else{
            startCapture()
            recordAudio()
            self.mergeVideoAndAudio(videoUrl: videoFileURL, audioUrl: soundFileURL!, shouldFlipHorizontally: true, completion: {(err, url) in
                self.videoWithAudioURL = url
                if (err != nil){
                    print(err?.localizedDescription ?? "Error in merging video and audio")
                }
                self.isFirstTouch = true
                })
    }
    }
}

它不起作用,并引发NSException类型的未捕获异常。

但是,如果我将合并功能分别放在另一个按钮中,则整个程序可以正常工作。看起来像这样:

@objc func touchCameraButton(){

    if isVideoRecordingOn{

        if isFirstTouch{
            startCapture()
            recordAudio()
            isFirstTouch = false
        }else{
            startCapture()
            recordAudio()
//                startCapture()
//                recordAudio()
//                self.mergeVideoAndAudio(videoUrl: videoFileURL, audioUrl: soundFileURL!, shouldFlipHorizontally: true, completion: {(err, url) in
//                    self.videoWithAudioURL = url
//                    if (err != nil){
//                        print(err?.localizedDescription ?? "Error in merging video and audio")
//                    }
//                    self.isFirstTouch = true
//                    })
    }
    }
}


@IBAction func touchSomeButton(_ sender: Any) {
    self.mergeVideoAndAudio(videoUrl: videoFileURL, audioUrl: soundFileURL!, shouldFlipHorizontally: true, completion: {(err, url) in
        self.videoWithAudioURL = url
        if (err != nil){
            print(err?.localizedDescription ?? "Error in merging video and audio")
        }
    })
}

我已经被这个问题困扰了两天,对发生的事情一无所知。我猜这可能是我不知道的后台线程和主线程存在问题。

0 个答案:

没有答案