벽을 여러 번 사용하여 머리를 여러 번 치고 처리하는 데 너무 많은 시간이 걸리는 다른 방법을 시도한 후에 (다른 볼륨의 MP3 파일을 변경)이 질문을 모든 사람에게 게시하기로 결정했습니다. 대답이있는 사람을 찾을 수 있기를 바랍니다.AVMutableComposition에서 트랙의 볼륨을 변경하는 방법
오디오 및 비디오 용 AVMutableCompositionTrack으로 채워지는 AVMutableComposition이 있습니다. 믹싱은 정상적으로 작동하지만 오디오 트랙의 볼륨 조정이 작동하지 않고 내보내는 동안 실패합니다.
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) {
...
모든 오디오 믹서없이 잘 혼합하지만 볼륨을 변경하려고 할 때 내보내기가 나에게 오류 제공 : AVMutableAudioMixInputParameters 설정 필요
AVFoundationErrorDomain Error: 11822
나는 해킹 작업에 이르렀다. 비디오없이 오디오 파일을 병합 한 다음 두 번째 패스를 수행하고 비디오를 병합하십시오. 더 좋은 방법이 있기를 바랍니다. – Dex
감사합니다 덱스 나는 그것을 시도 할 것입니다. –
당신은이 일을 했나요 ..? –