我的AVAssets
是纵向和横向。当我使用AVPlayer
一次一个地播放它们时,它们会以正确的方向播放。因此AVPlayer
正在阅读每个视频AVAssetTrack
preferredTransform
并进行相应调整。
另一方面,当我将纵向资产添加到AVMutableComposition
时,它会向侧面显示。大概这是因为AVMutableCompositionTrack
只有preferredTransform
的默认CGAffineTransformIdentity
。
我想要的是AVMutableComposition
尊重我添加的preferredTransform
资产,以便一切正常显示。
第2部分
我知道我可以通过向AVMutableVideoCompositionLayerInstructions
提供合成指令(AVAssetExportSession
)来执行视频轮播,例如解释here。但我还不想导出视频。
AVAssetExportSession
是唯一以AVMutableVideoComposition
作为输入的类吗?
第3部分
我正在尝试播放我即将导出的视频的预览,而唯一的合成操作是对纵向或横向的转换。所以我认为应该有一个更轻量级的方法,每次用户更改可变组合时都不会运行AVAssetExportSession
。这是正确的吗?
除了
顺便说一句,我想我不明白为什么AVMutableVideoComposition
本身不是AVAsset
的后代AVMutableComposition
。然后你可以直接播放作曲。
答案 0 :(得分:1)
AVPlayerItem * item item = [[AVPlayerItem alloc] initWithAsset:[collageComposition mutableCopy]];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:item];
item.videoComposition = [collageVideoComposition mutableCopy];
[item setSeekingWaitsForVideoCompositionRendering:NO];
item.audioMix = audioMix;
self.previewPlayer = [AVPlayer playerWithPlayerItem:item];
这就是预览所需的全部内容。如果您在animationTool
AVPlayer中使用AVMutableVideoComposition
,请不要支持它。使用AVSynchronizedLayer实现此目的。
答案 1 :(得分:0)
啊,AVPlayerItem
有一个videoComposition
属性。修改AVPlayerItem
适用于预览显示。