在iOS中将视频文件与原始音频合并

时间:2014-03-28 14:39:27

标签: ios objective-c ios7

我需要合并两个视频文件及其相应的音频。 我试过用: http://www.raywenderlich.com/13418/how-to-play-record-edit-videos-in-ios

视频合并,但音频丢失。它就像一个静音的视频。我还需要合并音频。我也搜索了这个,找不到任何有用的东西。有人可以帮我这个吗...

1 个答案:

答案 0 :(得分:5)

实时编辑音频与直播编辑视频完全一样。回到每部电影并获取音轨并将其粘贴到可变组合中。

在这个例子中,我抓住视频的前五秒和电影中最后五秒的视频,并将它们一个接一个地放在一个新视频中:

NSString* type = AVMediaTypeVideo;
NSArray* arr = [oldAsset tracksWithMediaType:type];
AVAssetTrack* track = [arr lastObject];
CMTime duration = track.timeRange.duration;
AVMutableComposition* comp = [AVMutableComposition composition];
AVMutableCompositionTrack* comptrack = [comp addMutableTrackWithMediaType:type preferredTrackID:kCMPersistentTrackID_Invalid];
[comptrack insertTimeRange:CMTimeRangeMake(CMTimeMakeWithSeconds(0,600), CMTimeMakeWithSeconds(5,600)) ofTrack:track atTime:CMTimeMakeWithSeconds(0,600) error:nil];
[comptrack insertTimeRange:CMTimeRangeMake(CMTimeSubtract(duration, CMTimeMakeWithSeconds(5,600)), CMTimeMakeWithSeconds(5,600)) ofTrack:track atTime:CMTimeMakeWithSeconds(5,600) error:nil];

但由此产生的视频将保持沉默。所以我也回去取相应的音频:

type = AVMediaTypeAudio;
arr = [oldAsset tracksWithMediaType:type];
track = [arr lastObject];
comptrack = [comp addMutableTrackWithMediaType:type preferredTrackID:kCMPersistentTrackID_Invalid];
[comptrack insertTimeRange:CMTimeRangeMake(CMTimeMakeWithSeconds(0,600), CMTimeMakeWithSeconds(5,600)) ofTrack:track atTime:CMTimeMakeWithSeconds(0,600) error:nil];
[comptrack insertTimeRange:CMTimeRangeMake(CMTimeSubtract(duration, CMTimeMakeWithSeconds(5,600)), CMTimeMakeWithSeconds(5,600)) ofTrack:track atTime:CMTimeMakeWithSeconds(5,600) error:nil];