Ios 如何在AVMutableComposition中组合纵向和横向资源进行预览
我有Ios 如何在AVMutableComposition中组合纵向和横向资源进行预览,ios,avfoundation,avassetexportsession,avmutablecomposition,avasset,Ios,Avfoundation,Avassetexportsession,Avmutablecomposition,Avasset,我有avasset,它们是纵向和横向的。当我用AVPlayer一次播放一个时,它们的播放方向是正确的。因此,AVPlayer正在读取每个视频的AVAssetTrackpreferredTransform并进行相应调整 另一方面,当我将肖像资源添加到AVMutableComposition时,它会横向显示。这大概是因为AVMutableCompositionTrack只是有一个默认的preferredTransform的CGAffineTransformity 我想让我的AVMutableComp
avasset
,它们是纵向和横向的。当我用AVPlayer
一次播放一个时,它们的播放方向是正确的。因此,AVPlayer
正在读取每个视频的AVAssetTrack
preferredTransform
并进行相应调整
另一方面,当我将肖像资源添加到AVMutableComposition
时,它会横向显示。这大概是因为AVMutableCompositionTrack
只是有一个默认的preferredTransform
的CGAffineTransformity
我想让我的AVMutableComposition
尊重我添加到其中的资产的preferredTransform
,这样一切都能正确显示
第二部分
我知道我可以通过向AVAssetExportSession
提供合成指令(AVMutableVideoCompositionLayerInstructions
)来执行视频旋转,例如,如上所述。但我还不想导出视频
avassetextortsession
是唯一一个将AVMutableVideoComposition
作为输入的类吗
第三部分
我正在尝试播放即将导出的视频预览,唯一的合成操作是转换为纵向或横向。因此,我认为应该有一种更轻量级的方法来实现这一点,而不必每次用户更改可变组合时都运行AVAssetExportSession
。是这样吗
旁白
另外,我想我不明白为什么
AVMutableVideoComposition
本身不是AVAsset
的后代,就像AVMutableComposition
一样。然后你可以直接玩合成游戏 Ah,AVPlayerItem
有一个videoComposition
属性。修改AVPlayerItem
将适合预览显示
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];
这就是预览所需的全部内容。如果在
AVMutableVideoComposition
AVPlayer中使用animationTool
,请不要支持它。为此,请使用AVSynchronizedLayer。什么是audioMix,您能解释一下吗?AVAudioMix
用于自定义音频处理,AVPlayerItem
属性。