美文网首页
Composition-多视频合并

Composition-多视频合并

作者: 烧烤有点辣 | 来源:发表于2021-01-18 17:20 被阅读0次

是否接触过视频编辑软件,如 Premiere 软件。
在PR上制作一个视频,我们首先需要创建一个新的序列,然后在这序列上添加上视频和音频的轨道。同理在iOS上实现视频合并也是如此流程。


1610961280181.jpg

AVFoundation 为音视频编辑提供了功能丰富的类集。AVMutableComposition是其中一个比较核心的对象,它提供了视频的插入和删除操作,以及调换顺序等音视频的操作。

  • AVMutableComposition -- 工程文件(pr中的序列)
  • AVMutableCompositionTrack -- 视频/音频轨道
  • AVAssetTrack -- 音频/视频片段
创建Composition

可以使用 AVMutableComposition类创建一个自定义的Composition。也可以使用AVMutableCompositionTrack类在自定义的Composition中添加一个或多个composition tracks.

这里通过 video track 和 audio track 创建的例子:

//工程文件
let mutableComposition = AVMutableComposition()
//工程文件中添加一个视频轨道
let mutableCompositionVideoTrack = mutableComposition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)
//工程文件中添加一个音频轨道
let mutableCompositionAudioTrack = mutableComposition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)

AVMutableComposition继承于AVAsset,可以用于AVPlayer的播放和最终的合成。也可以把Composition理解为是一个AVAsset,AVAsset能用的地方,它都可以使用。

AVAssetTrack获取插入轨道

通过视频地址得到一个AVAsset资源对象,这个AVAsset对象就是一个视频资源,里面有我们所需要的视频、音频、时间、视频大小等数据。

通过AVAsset获取AVAssetTrack

for videoUrl in videoPaths {
    let videoAsset = AVAsset(url: videoUrl)
    //获取素材中的视频轨道
    let videoAssetTrack = videoAsset.tracks(withMediaType: .video).first!
    do {
        //视频插入工程文件中的视频轨道中
        try mutableCompositionVideoTrack?.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAssetTrack.timeRange.duration), of: videoAssetTrack, at: .zero)
    } catch _ {
        print("Failed to load video track")
    }
            
    //音频同视频一样
    let audioAssetTrack = videoAsset.tracks(withMediaType: .audio).first!
    do {
        /视频插入工程文件中的视频轨道中
        try mutableCompositionAudioTrack?.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAssetTrack.timeRange.duration), of: audioAssetTrack, at: .zero)
    } catch _ {
       print("Failed to load audio track")
    }
}
得到最终的Composition

此时就可以拿这Composition对象,用于AVPlayer播放,或者 AVAssetExportSession 对象进行合成视频

相关文章

  • Composition-多视频合并

    是否接触过视频编辑软件,如 Premiere 软件。在PR上制作一个视频,我们首先需要创建一个新的序列,然后在这序...

  • 2019-03-22

    FFmpeg使用filter_complex命令合并多个视频 我的csdn原文 filter_complex合并多...

  • 视频合并软件合并多个视频文件的方法

    我们在网上观看视频的时候不难发现,有非常多的视频都是由多个视频片段合并而成的,这种方法就是视频合并了,这种方法可以...

  • 如何将两个或多个视频合并成一个视频,这里有妙招!

    哪个软件可以合并视频?视频合并软件哪个好?想必大家在浏览这篇文章的时候一定是在寻找一个可以合并视频的软件,视频合并...

  • 音视频剪切合并器有哪些

    看到视频剪切合并器大家可能就会想到视频剪辑,平常我们在剪辑视频时,常常会需要合并或者剪切视频,这时,视频分割合并软...

  • 合并视频

    本周轮到我整理第五周寒假作业指导。说起寒假学习,我无奈又无语。一方面觉得寒假里师生应该好好放松,修身养性,做点怡情...

  • FFmpeg 中的奇巧淫技

    章节 双视频合并&视频并排显示 视频去除音频 1、双视频合并&视频并排显示 1.1、命令行如下所示: -i 表示输...

  • 视频合并软件哪个好?分享一款你用了就离不开的视频合并软件!

    视频合并软件哪个好?今天小编给大家分享一款非常好用的视频合并软件,视频合并软件的主要作用是将两个或者两个以上的视频...

  • FFmpeg滤镜(9)

    FFmpeg视频抠图合并 FFmpeg除了半透明、透明水印处理外,还支持视频抠图与背景视频合并的操作——chrom...

  • 视频旋转合并

    先说视频合并 这是视频和音频合并 因为使用shareAEC sdk录屏unity画面 面对物体时候和easyARy...

网友评论

      本文标题:Composition-多视频合并

      本文链接:https://www.haomeiwen.com/subject/svpxzktx.html