2013-04-09 28 views
5

私は次の方法を使用しましたが、ビデオはマージされず、AVMutableCompositionTrackに最後に追加されたビデオはライブラリに保存されます。iPhone SDKでAVMutableCompositionを使用してビデオをマージする方法

NSArray *arrVideoUrl=[objApp.dictSelectedVideos allKeys]; 
AVURLAsset *video1=[[AVURLAsset alloc]initWithURL:[arrVideoUrl objectAtIndex:0] options:nil]; 
AVURLAsset *video2=[[AVURLAsset alloc]initWithURL:[arrVideoUrl objectAtIndex:1] options:nil]; 
AVURLAsset *audioAsset=[[AVURLAsset alloc]initWithURL:songUrl options:nil]; 

AVMutableComposition *mixcomposition=[AVMutableComposition composition]; 

AVMutableCompositionTrack *track1=[mixcomposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; 
[track1 insertTimeRange:CMTimeRangeMake(kCMTimeZero, video1.duration) ofTrack:[[video1 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
       atTime:kCMTimeZero error:nil]; 


AVMutableCompositionTrack *track2=[mixcomposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid]; 

[track2 insertTimeRange:CMTimeRangeMake(kCMTimeZero, video2.duration) ofTrack:[[video2 tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] 
       atTime:kCMTimeZero error:nil]; 

誰でもお手伝いできますか?

答えて

2

両方のトラックにAVMutableCompositionがあります。両方のトラックに - - AVMutableVideoCompositionLayerInstructionを作成する必要があります。そのオブジェクト差し込みトラックの

  • 作成AVMutableVideoCompositionInstruction
    は、第1および第2のトラックのAVMutableVideoCompositionLayerInstruction からなるアレイでinstructionsを有するであろう。

  • は、マージされたトラックオブジェクトのためのAVMutableVideoCompositionを作成し、
    AVMutableVideoCompositionInstructionの上に提供しています。

このアプローチは、thisの非常に良いチュートリアルのリンクです。

+0

これはうまくいきました。しかし、私は向きに問題が発生しています...ビデオの向きは、AVAssetのデフォルトであるランドスケープに設定されています。私はあなたのリンクによって与えられたチュートリアルを使用しましたが、向きの問題が起こっています。あなたは私がこれを抜け出すのを助けてくれますか? –

+0

オリエンテーションのためにうれしいことがあれば、デバイス方向に応じて変換(CGAfflineTransform)を行うことでAVPlayerLayerのプロパティを '変換'できます。 – BhushanVU

+1

コードをありがとう!ああ待って、あなたは何も残していない... -1 –

関連する問題