1.使用AVPlayer
[self.player replaceCurrentItemWithPlayerItem:curItem];
2.使用AVQueuePlayer
AVQueuePlayer *player = [AVQueuePlayer queuePlayerWithItems:@[item1,item2]];
3.使用AVMutableComposition 组合多个视频
-(AVMutableComposition*)getVideoComposition:(NSArray*)array {
AVMutableComposition* mixComposition = [AVMutableComposition composition];
AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *compositionAudioTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
Float64 tmpDuration =0.0f;
NSMutableArray *assetArray = [NSMutableArray new];
for (NSInteger i=0; i<array.count; i++)
{
AVURLAsset *videoAsset = [[AVURLAsset alloc]initWithURL:array[i] options:nil];
[assetArray addObject:videoAsset];
}
for (NSInteger i=0; i<assetArray.count; i++) {
AVURLAsset *videoAsset = [assetArray objectAtIndex:i];
CMTimeRange video_timeRange = CMTimeRangeMake(kCMTimeZero,videoAsset.duration);
NSError *error;
NSArray *tracks = [videoAsset tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *videoTrack = [tracks objectAtIndex:0];
[compositionVideoTrack insertTimeRange:video_timeRange ofTrack:videoTrack atTime:CMTimeMakeWithSeconds(tmpDuration, 0) error:&error];
NSArray *audios = [videoAsset tracksWithMediaType:AVMediaTypeAudio];
if(audios.count > 0) {
[compositionAudioTrack insertTimeRange:video_timeRange ofTrack:[audios objectAtIndex:0] atTime:CMTimeMakeWithSeconds(tmpDuration, 0) error:&error];
}else {
[compositionAudioTrack insertEmptyTimeRange:CMTimeRangeMake(CMTimeMake(tmpDuration, 1000), videoAsset.duration)];
}
[compositionVideoTrack setPreferredTransform:videoTrack.preferredTransform];
tmpDuration += CMTimeGetSeconds(videoAsset.duration);
}
return mixComposition;
}
AVMutableComposition *composition = [self getVideoComposition:array];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:[composition copy]];
AVPlayer *player =[AVPlayer playerWithPlayerItem:item];
网友评论