iphone ios 音频添加,合成,替换到视频(里的音轨)

如果对av foundation 不熟悉得话,建议先看看wwdc 2010 关于avfoundation得讲座。http://blog.csdn.net/linzhiji/article/details/6752722


I have a video file and an audio file. Is it possible to merge itto one video with with sound file. I think AVMutableComposition should help me, but I still dont understand how. any  advices?

AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:audioUrloptions:nil];
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:videoUrloptions:nil];

AVMutableComposition* mixComposition = [AVMutableCompositioncomposition];

AVMutableCompositionTrac

k *compositionCommentaryTrack =[mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio
                                                                                   preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionCommentaryTrackinsertTimeRange:CMTimeRangeMake(kCMTimeZero,audioAsset.duration)
                                   ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0]
                                    atTime:kCMTimeZero error:nil];

AVMutableCompositionTrack *compositionVideoTrack = [mixCompositionaddMutableTrackWithMediaType:AVMediaTypeVideo
                                                                                   preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,videoAsset.duration)
                              ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0]
                               atTime:kCMTimeZero error:nil];

AVAssetExportSession* _assetExport = [[AVAssetExportSession alloc]initWithAsset:mixComposition
                                                                     presetName:AVAssetExportPresetPassthrough];  

NSString* videoName = @"export.mov";

NSString *exportPath = [NSTemporaryDirectory()stringByAppendingPathComponent:videoName];
NSURL   *exportUrl = [NSURL fileURLWithPath:exportPath];

if ([[NSFileManager defaultManager]fileExistsAtPath:exportPath])
{
   [[NSFileManager defaultManager] removeItemAtPath:exportPatherror:nil];
}

_assetExport.outputFileType = @"com.apple.quicktime-movie";
DLog(@"file type %@",_assetExport.outputFileType);
_assetExport.outputURL = exportUrl;
_assetExport.shouldOptimizeForNetworkUse = YES;

[_assetExport exportAsynchronouslyWithCompletionHandler:
 ^(void ){     
           // your completion code here
         
 }
 ];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值