Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在AVMutableComposition中组合纵向和横向资源进行预览_Ios_Avfoundation_Avassetexportsession_Avmutablecomposition_Avasset - Fatal编程技术网

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
属性。