Swift2.3에서 두 개의 오디오 파일을 병합합니다.병합 오디오 파일 줄이기?
괜찮습니다. 파일 크기는 7MB입니다. 그래서 서버에 보낼 수 없습니다.
오디오 파일 크기를 줄이는 방법은 무엇입니까? 그래서 나는 쉽게 서버에 보낼 수 있습니다. 아래 코드를 첨부했습니다. 병합하려는 사용자에게 유용합니다.
func mixAudio()
{
let currentTime = CFAbsoluteTimeGetCurrent()
let composition = AVMutableComposition()
let compositionAudioTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: kCMPersistentTrackID_Invalid)
compositionAudioTrack.preferredVolume = 0.8
let avAsset = AVURLAsset.init(URL: soundFileURL, options: nil)
print("\(avAsset)")
var tracks = avAsset.tracksWithMediaType(AVMediaTypeAudio)
let clipAudioTrack = tracks[0]
do {
try compositionAudioTrack.insertTimeRange(CMTimeRangeMake(kCMTimeZero, avAsset.duration), ofTrack: clipAudioTrack, atTime: kCMTimeZero)
}
catch _ {
}
let compositionAudioTrack1 = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: kCMPersistentTrackID_Invalid)
compositionAudioTrack.preferredVolume = 0.8
let avAsset1 = AVURLAsset.init(URL: soundFileURL1)
print(avAsset1)
var tracks1 = avAsset1.tracksWithMediaType(AVMediaTypeAudio)
let clipAudioTrack1 = tracks1[0]
do {
try compositionAudioTrack1.insertTimeRange(CMTimeRangeMake(kCMTimeZero, avAsset1.duration), ofTrack: clipAudioTrack1, atTime: kCMTimeZero)
}
catch _ {
}
var paths = NSSearchPathForDirectoriesInDomains(.LibraryDirectory, .UserDomainMask, true)
let CachesDirectory = paths[0]
let strOutputFilePath = CachesDirectory.stringByAppendingString("/newone.mov")
print(" strOutputFilePath is \n \(strOutputFilePath)")
let requiredOutputPath = CachesDirectory.stringByAppendingString("/newone.m4a")
print(" requiredOutputPath is \n \(requiredOutputPath)")
let audioFileOutput = NSURL.fileURLWithPath(requiredOutputPath)
print(" OUtput path is \n \(audioFileOutput)")
do {
try NSFileManager.defaultManager().removeItemAtURL(audioFileOutput)
}
catch _ {
}
let exporter = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetAppleM4A)
exporter!.outputURL = audioFileOutput
exporter!.outputFileType = AVFileTypeAppleM4A
exporter!.exportAsynchronouslyWithCompletionHandler
{() -> Void in
print(" OUtput path is \n \(requiredOutputPath)")
print("export complete: \(CFAbsoluteTimeGetCurrent() - currentTime)")
do
{
print(audioFileOutput)
print(" OUtput path is \n \(requiredOutputPath)")
self.wasteplayer = try AVAudioPlayer(contentsOfURL: audioFileOutput)
self.wasteplayer.numberOfLoops = 0
self.wasteplayer.play()
}
}
catch _
{
}
}
인코딩이 시도 할 수 있습니까? – Moritz
Iam이 인코딩하지 않습니다. 그냥 두 개의 오디오 파일을 병합합니다 (하나의 파일은 배경 음악() mp3이고 다른 하나는 이미 녹음 된 음성 (m4a)입니다) .i 위 코드를 첨부했습니다 .i 병합 된 파일을 확인하십시오. 폴더. 크기가 7MB이어야합니다. 크기를 줄이려면. – HariKarthick
그래서 내가 MP3 또는 AAC로 오디오를 인코딩하는 것이 좋습니다 ** ** 합병 후 ... – Moritz