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