AVMutableComposition - 视频资产之间的空白/黑框

时间:2011-11-07 14:27:58

标签: ios avassetexportsession avmutablecomposition avurlasset

我目前正在尝试使用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导出视频,但是在每个视频之间都有效,我得到一个空白/黑框,我需要删除它。有没有人之前遇到过这个问题,如果是这样,你能设法修复它吗?

此外,空白帧不在源视频文件中。

提前致谢。

1 个答案:

答案 0 :(得分: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类型添加一个单独的音轨。