相关疑难解决方法(0)

只有AVMutableComposition的第一首曲目播放()

下面的新编辑

我已经引用了

AVMutableComposition - 仅播放第一曲目(Swift)

但它没有提供我正在寻找的答案.

我有一个AVMutableComposition().我试图在这个单一的组合中应用MULTIPLE AVCompositionTrack,单一类型AVMediaTypeVideo.这是因为我用2个不同的AVMediaTypeVideo具有不同来源CGSize的和preferredTransforms的的AVAsset"他们来自秒.

因此,应用指定的唯一方法preferredTransforms是在两个不同的轨道中提供它们.但是,无论出于何种原因,只有第一首曲目实际上会提供任何视频,几乎就像第二首曲目从未出现过一样.

所以,我试过了

1)使用AVMutableVideoCompositionLayerInstruction's并且应用一个AVVideoComposition,一个AVAssetExportSession正常工作,我仍然在进行变换,但是可行.但视频的处理时间超过1分钟,这在我的情况下是不适用的.

2)使用多个音轨,AVAssetExportSession不会出现相同类型的第二个音轨.现在,我可以将它全部放在一个轨道上,但所有视频将与第一个视频相同的尺寸和首选视频,这是我绝对不想要的,因为它会在各个方向上拉伸它们.

所以我的问题是,是否有可能

1)在没有使用的情况下将指令应用于轨道AVAssetExportSession?//首选方式BY FAR.

2)减少出口时间?(我已经尝试过使用PresetPassthrough但你不能使用它,如果你有exporter.videoComposition我的指示所在的地方.这是我知道我可以放指令的唯一地方,不知道我是否可以将它们放在其他地方.

这是我的一些代码(没有导出器,因为我不需要在任何地方导出任何东西,只需在AVMutableComposition组合项目后执行操作.

func merge() {
    if let firstAsset = controller.firstAsset, secondAsset = self.asset {

        let mixComposition = AVMutableComposition()

        let firstTrack = mixComposition.addMutableTrackWithMediaType(AVMediaTypeVideo,
                                                                     preferredTrackID: Int32(kCMPersistentTrackID_Invalid))
        do {
            //Don't need now according to not being able to edit …
Run Code Online (Sandbox Code Playgroud)

avmutablecomposition avasset cgsize swift

15
推荐指数
1
解决办法
1368
查看次数

标签 统计

avasset ×1

avmutablecomposition ×1

cgsize ×1

swift ×1