iOS9:AVFoundation 导出会话缺少音频

iOS 9 : AVFoundation Export Session is missing audio

我在将视频与原始音频合并时使用了以下截取的代码。它一直在工作,直到我升级到 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];

我遇到过类似的问题,但我的观察是您无法再添加没有音频的音轨。 IOS 9 然后将删除完整的音频。

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 上的测试是不够的。

我将两个音轨与一个视频组合在一起,对于 IOS 9.

没有任何问题