Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一个音频文件与两个视频文件合并到iphone sdk中_Iphone_Xcode_Audio_Video_Avmutablecomposition - Fatal编程技术网

将一个音频文件与两个视频文件合并到iphone sdk中

将一个音频文件与两个视频文件合并到iphone sdk中,iphone,xcode,audio,video,avmutablecomposition,Iphone,Xcode,Audio,Video,Avmutablecomposition,我想知道如何将给定的音频文件与两个视频文件结合起来。当涉及到组合音频时,我被卡住了,但视频很好,以下是我到目前为止所做的 - (IBAction)MergeAndSave:(id)sender{ if(firstAsset !=nil && secondAsset!=nil){ [ActivityView startAnimating]; //Create AVMutableComposition Object.This object wi

我想知道如何将给定的音频文件与两个视频文件结合起来。当涉及到组合音频时,我被卡住了,但视频很好,以下是我到目前为止所做的

- (IBAction)MergeAndSave:(id)sender{
    if(firstAsset !=nil && secondAsset!=nil){
        [ActivityView startAnimating];
        //Create AVMutableComposition Object.This object will hold our multiple AVMutableCompositionTrack.
        AVMutableComposition* mixComposition = [[AVMutableComposition alloc] init];

        //VIDEO TRACK
        AVMutableCompositionTrack *firstTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
        [firstTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, firstAsset.duration) ofTrack:[[firstAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil];

        AVMutableCompositionTrack *secondTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
        [secondTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, secondAsset.duration) ofTrack:[[secondAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:firstAsset.duration error:nil];

        //AUDIO TRACK
        if(audioAsset==nil){

            NSURL* musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                                       pathForResource:@"click"
                                                       ofType:@"caf"]];

            AVMutableCompositionTrack *click = [[AVMediaTypeAudio] initWithContentsOfURL:musicFile error:nil];
            [click insertTimeRange:CMTimeRangeMake(kCMTimeZero, CMTimeAdd(firstAsset.duration, secondAsset.duration))
                                ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:nil];


                   }

正如您所见,我的音频代码根本不起作用

请将audioAsset的类型更改为AVURLAsset,而不是AVAsset ... 希望它能起作用


如果不试试这个

我看过Raywenderlich的一个教程,mergétwo videôand你可以放一个音频文件。。。你看到了吗?这可能会对你有所帮助。@Larme是的,我见过:)但是我想使用一个专用的音频文件,而不是ipod库中的音频文件。我想区别只是你加载的音乐:如何获取。是的,但我尝试了不同的代码,但还没有找到解决方案,所以我求助于你们,希望你们能帮我解决这个问题AVMutableCompositionTrack*AudioTrack=[mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID\u无效];AVURLAsset*mixAsset=[AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@“wav”类型的“文件”]]选项:无];[AudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,CMTimeAdd(firstAsset.duration,secondAsset.duration))跟踪:[[mixAsset tracksWithMediaType:AVMediaTypeAudio]对象索引:0]时间:audioAsset.duration错误:无];更改类型与使代码正常工作无关,解决方案是URLAssetWithURL和tracksWithMediaType:AVMediaTypeAudio