iOS 9:AVFoundation导出会话缺lessaudio

在使用原始audio合并video时,我正在使用以下代码。 它一直在工作,直到我升级到iOS9。 任何人都面临同样的问题,任何帮助解决将不胜感激。 经过一整天的研究,我找不到任何东西。

AVAssetTrack *videoTrack = nil; AVAssetTrack *audioTrack = nil; CMTime insertionPoint = kCMTimeZero; if([[url tracksWithMediaType:AVMediaTypeVideo] count] != 0) { videoTrack = [url tracksWithMediaType:AVMediaTypeVideo][0]; } if([[url tracksWithMediaType:AVMediaTypeAudio] count] != 0) { audioTrack = [url tracksWithMediaType:AVMediaTypeAudio][0]; } // Insert the video and audio tracks from AVAsset if (videoTrack != nil) { AVMutableCompositionTrack *compositionVideoTrack = [videoComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [url duration]) ofTrack:videoTrack atTime:insertionPoint error:&error]; } if (audioTrack != nil) { AVMutableCompositionTrack *compositionAudioTrack = [videoComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [url duration]) ofTrack:audioTrack atTime:insertionPoint error:&error]; } 

发现问题:在上面的代码之后我使用了下面的代码。 删除后,它工作正常。 下面的额外行删除iOS 9中已经添加的音轨。希望它可以帮助别人!

AVMutableCompositionTrack * compositionAudioTrack2 = [videoComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];

我有类似的问题,但我的观察是,你不能添加没有audio的音轨了。 IOS 9将删除完整的audio。

 So only this line will remove all audio compositionAudioTrack = [videoComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid]; 

如果没有跟着一个有效的

 [compositionAudioTrack insertTimeRange: CMTimeRangeMake(kCMTimeZero, [url duration]) ofTrack:audioTrack atTime:insertionPoint error:&error]; 

所以对audioTrack!= nil的testing是不够的。

我将两个音轨与一个video结合在一起,不再有IOS 9的问题。