5

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

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];

誰でも私を助けてもらえますか?

4

1 に答える 1

3

これAVMutableCompositionで、両方のトラックに が作成されました。作成する必要があるのは、両方のトラックに対して -- -AVMutableVideoCompositionLayerInstructionです。

  • 1 番目と 2 番目のトラックで構成される配列にオブジェクト がAVMutableVideoCompositionInstruction含まれるマージされたトラックを作成します 。
    instructionsAVMutableVideoCompositionLayerInstruction

  • AVMutableVideoCompositionMerged トラック オブジェクト用に作成し、上記を提供します
    AVMutableVideoCompositionInstruction

このアプローチは、このリンクの非常に優れたチュートリアルからのものです。

于 2013-04-09T13:34:21.580 に答える