我有一個簡單的編輯器連接本地視頻文件,並將其與本地文件中的音樂進行疊加。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更好,你說得對。我需要查找實際問題,這是一個奇怪的問題。請給我一點時間;) –