使用 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
是另一个简单的音轨。 easset
是 AVAssetExporterSession
对象。
我正在处理一个应该能够在单个电影文件 (.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
是另一个简单的音轨。 easset
是 AVAssetExporterSession
对象。