我有一个简单的编辑器连接本地视频文件,并将其与本地文件中的音乐进行叠加。AVMutableAudioMix多个音轨的音量不能正常工作
我创建一个成分和组成轨道和视频A/V曲目添加到他们:
NSMutableArray *audioInputParams = [NSMutableArray array];
AVMutableComposition *composition = [NSMutableComposition composition];
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
for (AVURLAsset *asset in assets) {
AVAssetTrack *audioTrack = [asset compatibleTrackForCompositionTrack:compositionAudioTrack];
AVAssetTrack *videoTrack = [asset compatibleTrackForCompositionTrack:compositionVideoTrack];
// compositionAudioTrack insert audioTrack
// compositionVideoTrack insert videoTrack
这一切工作正常。由此产生的视频在声音和视频中完美切割。
UI中有一个滑块,可以在原始视频声音和音乐声音之间交叉淡入淡出。滑块从0变为1,因为AVs音量也是如此。
我使用滑块值减去每个视频音量和音乐的价值,因为它是。
AVMutableAudioMixInputParameters *audioMixParameters = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:audioTrack];
[audioMixParameters setVolume:1.0 - [slider value] atTime:kCMTimeZero];
[audioInputParams addObject:audioMixParameters];
}
AVMutableCompositionTrack *compositionMusicTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
AVURLAsset *musicAsset;
AVAssetTrack *musicTrack = [musicAsset compatibleTrackForCompositionTrack:compositionMusicTrack];
[compositionMusicTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [composition duration])
ofTrack:musicTrack
atTime:kCMTimeZero
error:nil];
AVMutableAudioMixInputParameters *musicInputParameter = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:musicTrack];
[musicInputParameter setVolume:[slider value] atTime:kCMTimeZero];
[audioInputParams addObject:musicInputParameter];
AVMutableAudioMix *audioMix = [AVMutableAudioMix audioMix];
[audioMix setInputParameters:audioInputParams];
当我现在用的音响组合,无论是播放或进行渲染,音频混合不起作用。当我将视频音量设置为1时,它无法忍受。设置为零时,我可以听到它。
无论我为音乐设置了什么样的价值,它在输出上都是完整的。
我也尝试设置trackID,这也没有做。此外,它没有滑块问题,我试图硬编码各种浮点值,结果证明不起作用。
现在我不明白为什么这会表现得像这样。这是完全奇怪的,我不能解释。
“当我现在使用音频混合,无论是播放还是渲染,[......]”请正确阅读这个问题。它不得不做一些事情,但我已经解决了,所以我要删除这个问题 –
对不起,我错过了这个..但请提供答案你如何解决这个问题,AVFoundation是非常复杂的,这问题可能对包括我在内的其他人有用,因为那是我首先遇到你的问题的原因,我遇到过与audiomix类似的问题。 – Gregortega
Wiuld更好,你说得对。我需要查找实际问题,这是一个奇怪的问题。请给我一点时间;) –