gpt4 book ai didi

ios - 如何更改 AVMutableComposition 中轨道的音量

转载 作者:行者123 更新时间:2023-11-29 13:40:10 26 4
gpt4 key购买 nike

我一直在尝试不同的方法来解决这个问题,但它们的处理时间太长(针对不同的音量更改 MP3 文件)。

我有一个 AVMutableComposition,其中填充了多个用于音频和视频的 AVMutableCompositionTrack。混音工作正常,但音轨的音量调整不起作用,并且在导出时失败。

这是我使用的代码:

AVMutableComposition* mixComposition = [AVMutableComposition composition];
AVURLAsset *soundTrackAsset = [[AVURLAsset alloc]initWithURL:trackTempProcessedURL options:nil];

//ADDING AUDIO
AVMutableCompositionTrack *compositionAudioSoundTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:trackIDSoundTrack];
[compositionAudioSoundTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioAsset.duration)
ofTrack:[[soundTrackAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]
atTime:CMTimeAdd(cmTimeDifference,startTime) error:nil];

NSArray *tracksToDuck = [mixComposition tracksWithMediaType:AVMediaTypeAudio];
NSMutableArray *trackMixArray = [NSMutableArray array];
for (NSInteger i = 0; i < [tracksToDuck count]; i++) {
AVMutableAudioMixInputParameters *trackMix = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:[tracksToDuck objectAtIndex:i]];
[trackMix setVolume:volume atTime:kCMTimeZero];
[trackMixArray addObject:trackMix];
}
audioMix = [AVMutableAudioMix audioMix];
audioMix.inputParameters = trackMixArray;

//ADDING VIDEO
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:frontAssetURL options:nil];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration)
ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
atTime:startTime error:nil];

//EXPORTING
_assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName: AVAssetExportPresetPassthrough];

_assetExport.outputFileType = AVFileTypeQuickTimeMovie;
_assetExport.outputURL = exportUrl;
_assetExport.shouldOptimizeForNetworkUse = YES;
_assetExport.audioMix = audioMix;

[_assetExport exportAsynchronouslyWithCompletionHandler:
^(void ) {
...

没有混音器,一切都可以很好地混合,但是当我尝试改变音量时,导出会给我一个错误:

AVFoundationErrorDomain Error: 11822

最佳答案

AVMutableAudioMixInputParameters 需要设置“trackID”来指示哪个音轨应该应用参数。

for (NSInteger i = 0; i < [tracksToDuck count]; i++) {
AVMutableAudioMixInputParameters *trackMix = [AVMutableAudioMixInputParameters audioMixInputParametersWithTrack:[tracksToDuck objectAtIndex:i]];
[trackMix setVolume:volume atTime:kCMTimeZero];

//+++++code
AVMutableCompositionTrack * track = [tracksToDuck objectAtIndex:i]
[trackMix setTrackID:[track trackID]];

[trackMixArray addObject:trackMix];
}

关于ios - 如何更改 AVMutableComposition 中轨道的音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com