【发布时间】:2012-12-24 23:55:37
【问题描述】:
我正在使用 iOS AVFoundation 框架,并且能够成功地合并视频轨道、图像叠加层和文本叠加层。但是,我的输出文件不会保留原始源视频中的音频。
如何确保我的一个视频的音频源与我创建的新视频保持一致?
编辑
*使用此代码有一个很好的示例,说明如何创建视频(带有原始音频)。对我来说,在使用 AVFoundation 处理视频时需要单独包含音轨并不明显。希望这对其他人有帮助。
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];
}
【问题讨论】:
-
谢谢哥们!你救了我几天的痛苦
-
@ajs35 回答您自己的问题也是公认的做法!不要害怕这样做:-)
-
在我升级到 iOS9 SDK 之前,上述示例似乎运行良好。其他人在 iOS 9 中有同样的问题吗?
标签: ios audio video export avfoundation