0
두 개의 비디오를 결합한 응용 프로그램을 만들고이를 하나로 병합 한 다음 비디오에 사용자 정의 audiotrack을 넣습니다. 이 모든 것이 완벽하게 작동합니다. 이제 오디오를 페이드 아웃하고 싶습니다. 반면에 이것은 효과가 없으며 그 이유는 모르겠습니다. 이 내 코드입니다 :AVAssetExportSession, AudioMix가 작동하지 않는 AVMutableComposition은 작동하지 않습니다.
let duration = composition.duration
let durationInSeconds = CMTimeGetSeconds(duration) * 10
let composition = AVMutableComposition()
let item = AVPlayerItem(asset: composition)
let params = AVMutableAudioMixInputParameters(track: composition.tracks.first! as AVAssetTrack)
let lastSecond = CMTimeRangeMake(CMTimeMakeWithSeconds(durationInSeconds-10, 10), CMTimeMakeWithSeconds(1, 1))
params.setVolumeRamp(fromStartVolume: 1, toEndVolume: 0, timeRange: lastSecond)
let mix = AVMutableAudioMix()
mix.inputParameters = [params]
item.audioMix = mix
// Put the track under the video
do {
try audioTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, current), of: backgroundAudio.tracks(withMediaType: AVMediaTypeAudio)[0], at: kCMTimeZero)
} catch _ {
print("Failed to load Audio track")
}
guard let exporter = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality) else { return }
exporter.audioMix = mix
exporter.outputURL = URL(fileURLWithPath: finalVideoPath)
exporter.outputFileType = AVFileTypeMPEG4
exporter.shouldOptimizeForNetworkUse = true
그리고 코드 블록 후 비디오 자체가 렌더링 다른 방법으로 계속합니다. 누군가가 왜 이것이 작동하지 않고 어떻게 해결할 수 있는지 설명 할 수 있습니까?
미리 감사드립니다.