Loop AVMutableCompositionTrack

后端 未结 3 666
深忆病人
深忆病人 2021-02-04 21:15

I have got two audio tracks on me that I combine with one another like this:

AVMutableComposition *composition = [[AVMutableComposition alloc] init];

AVMutableC         


        
3条回答
  •  轮回少年
    2021-02-04 21:50

    I think it should work:

    CMTime videoDuration = avAsset.duration;
    if(CMTimeCompare(videoDuration, audioAsset.duration) == -1){
        [compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, avAsset.duration) ofTrack:clipAudioTrack1 atTime:kCMTimeZero error:nil];
    }else if(CMTimeCompare(videoDuration, audioAsset.duration) == 1){
         CMTime currentTime = kCMTimeZero;
         while(YES){
               CMTime audioDuration = audioAsset.duration;
               CMTime totalDuration = CMTimeAdd(currentTime,audioDuration);
               if(CMTimeCompare(totalDuration, videoDuration)==1){
                  audioDuration = CMTimeSubtract(totalDuration,videoDuration);
    
               }
               [compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioDuration) ofTrack:clipAudioTrack1 atTime:currentTime error:nil];
               currentTime = CMTimeAdd(currentTime, audioDuration);
               if(CMTimeCompare(currentTime, videoDuration) == 1 || CMTimeCompare(currentTime, videoDuration) == 0){
                   break;
               }
         }
    }
    

提交回复
热议问题