AVMutableComposition – video资产之间的空白/黑框

我目前正在尝试使用AVMutableComposition将5个video背对背放置,如下所示:

[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导出video,然而,每个video之间的工作,我得到一个空白/黑框,我需要删除。 有没有人有过这个问题,如果是你设法解决它?

另外,空白帧不在源video文件中。

提前致谢。

前几天我也有同样的问题。

如果通过再次使用insertTimeRange创build的其他资产导出资产(资产1,资产2等),则情况也是如此。

问题是,当您导出使用insertTimeRange创build的资产时,导出不正确,当您附加这些video黑色框架之间出现之间。

尝试使用AVAssetExportSession的“timeRange”选项,并从主资源中剪切所需的范围。 那么你的资产将附上正确的。

我刚刚遇到了同样的问题。 打开解决scheme是使用AVMutableCompositionTrack和合成video轨道,这样的事情。

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

对于audio部分,我认为你必须添加一个AVMediaTypeAudiotypes的单独的轨道。