使用 AVMutableComposition 在单个轨道中合并音轨

Merging audio tracks in a single track using AVMutableComposition

我正在处理一个应该能够在单个电影文件 (.mp4) 中混合多个视频和音频剪辑的应用程序。

目前生成的电影有一个视频轨道,即所有导入的视频剪辑的串联,以及两个音轨,一个来自导入的视频剪辑,另一个来自导入的音频剪辑。

我想做的是合并这两个音轨,因为我想在生成的电影文件中只有一个音轨。虽然我们可以使用指令层技术并将多个视频轨道合并在一起,但我无法找到类似的音频。

我读到了有关音频混合对象的信息,但我认为它只会混合来自两个轨道的音频。相反,我只想拥有一个。

显然我尝试将视频的音频和简单的音频添加到同一轨道,但生成的视频仍然是黑色的,这对我来说意味着资产构建过程出了问题。在同一时间范围内自然地插入不同的音频并不是一个好主意:-)

有什么建议吗?

好的,终于我应该找到解决方案了。真正使用 AVMutableAudioMix 生成的电影文件只有一个音轨而不是两个。

编辑 回答贾斯汀的评论,这是诀窍:

        let audioMix = AVMutableAudioMix()
        let vip = AVMutableAudioMixInputParameters(track: self.videoAudioTrack!)
        vip.trackID = self.videoAudioTrack!.trackID
        vip.setVolume(self.videoAudioMixerVolume, at: .zero)
        let aip = AVMutableAudioMixInputParameters(track: self.audioTrack!)
        aip.trackID = self.audioTrack!.trackID
        aip.setVolume(self.audioMixerVolume, at: .zero)
        audioMix.inputParameters = [vip, aip]
        easset.audioMix = audioMix

其中 videoAudioTrack 是视频剪辑的音轨,而 audioTrack 是另一个简单的音轨。 eassetAVAssetExporterSession 对象。