4

私は現在、次のようにAVMutableCompositionを使用して5本のビデオを連続して配置しようとしています。

[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset1.duration) ofAsset:asset1 atTime:[mixComposition duration] error:nil];
[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset2.duration) ofAsset:asset2 atTime:[mixComposition duration] error:nil];
[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset3.duration) ofAsset:asset3 atTime:[mixComposition duration] error:nil];
[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset4.duration) ofAsset:asset4 atTime:[mixComposition duration] error:nil];
[mixComposition insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset5.duration) ofAsset:asset5 atTime:[mixComposition duration] error:nil];

次に、AVAssetExportSessionを使用してビデオをエクスポートしますが、各ビデオ間で、削除する必要のある空白/黒のフレームが表示されます。誰かが以前にこの問題を抱えていましたか?もしそうなら、あなたはそれを修正することができましたか?

また、空白のフレームはソースビデオファイルにはありません。

前もって感謝します。

4

2 に答える 2

2

先日も同じ問題がありました。

アセット(asset1、asset2など)を、insertTimeRangeを再度使用して作成された他のアセットからエクスポートして取得した場合も、同じケースです。

問題は、insertTimeRangeを使用して作成されたアセットをエクスポートするときに、そのようなビデオをアタッチすると、それらの間に黒いフレームが表示されるため、エクスポートが正しく行われないことです。

AVAssetExportSessionの「timeRange」オプションを使用して、メインアセットから必要な範囲を切り取ってみてください。その後、アセットが正しくアタッチされます。

于 2011-12-19T13:32:58.263 に答える
0

私はちょうど同じ問題に遭遇しました。解決策は、AVMutableCompositionTrackを使用し、ビデオトラックを合成することです。

AVMutableCompositionTrack * videoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];

[videoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, asset.duration) ofTrack:[[asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:composition.duration error:&error];

オーディオ部分については、AVMediaTypeAudioタイプの別のトラックを追加する必要があると思います。

于 2012-01-16T10:21:31.857 に答える