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

在iOS中将视频文件与其原始音频合并,ios,objective-c,ios7,Ios,Objective C,Ios7,我需要合并两个视频文件及其相应的音频。 我尝试使用: 视频被合并,但其音频丢失。它就像一个静音的视频。我需要的音频也要合并。我也在谷歌上搜索了一下,找不到任何有用的东西。有人能帮我一下吗 现场编辑音频与现场编辑视频完全相同。回到每一部电影,取出音轨并将其粘贴到你的可变构图中 在本例中,我从一部电影中抓取视频的前5秒和后5秒,并将它们依次放入新视频中: NSString* type = AVMediaTypeVideo; NSArray* arr = [oldAsset tracksWithMe

我需要合并两个视频文件及其相应的音频。 我尝试使用:


视频被合并,但其音频丢失。它就像一个静音的视频。我需要的音频也要合并。我也在谷歌上搜索了一下,找不到任何有用的东西。有人能帮我一下吗

现场编辑音频与现场编辑视频完全相同。回到每一部电影,取出音轨并将其粘贴到你的可变构图中

在本例中,我从一部电影中抓取视频的前5秒和后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];

'AVMutableCompositionTrack*AudioTrack=[mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_无效];'[AudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,firstAsset.duration)跟踪:[[firstAsset tracksWithMediaType:AVMediaTypeAudio]对象索引:0]时间:kCMTimeZero错误:无];“”AVMutableCompositionTrack*secondTrack=[mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_无效];//对另一个曲目执行相同的操作,如:[secondTrack insertTimeRange:。。。。