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

前几天我遇到了同样的问题。

如果您通过再次使用 insertTimeRange 创建的其他资产导出资产(资产 1、资产 2 等)来获得资产(资产 1、资产 2 等),则情况相同。

问题是,当您导出使用 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 回答