Post

Replies

Boosts

Views

Activity

AVAssetExportSession trims audio with some error
Hi there!My goal is to trim audio quite precisely. I'm facing some strange issue when exporting it using AVAssetExportSession.The code is pretty straightforward.import UIKit import AVFoundation import PlaygroundSupport let asset: AVURLAsset = AVURLAsset(url: Bundle.main.url(forResource: "tmp", withExtension: "aac")!) print(asset) let timeRange = CMTimeRange( start: CMTime(seconds: 20.0, preferredTimescale: asset.duration.timescale), end: CMTime(seconds: 25.0, preferredTimescale: asset.duration.timescale) ) let exportSession = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetPassthrough)! exportSession.outputFileType = .m4a let fm = FileManager.default let tmpDirURL = FileManager.default.temporaryDirectory.appendingPathComponent("cut.m4a") try? fm.removeItem(at: tmpDirURL) exportSession.outputURL = tmpDirURL print(tmpDirURL) exportSession.timeRange = timeRange exportSession.exportAsynchronously { switch exportSession.status { case .completed: print("completed") default: print("exportSession: \(exportSession.error?.localizedDescription ?? "error")") } }When I started analyzing results in the Audacity, I see that file is trimmed with some error which is very critical.If I align it by peaks (on the eye) I see ~500 ms error in this particular case. Error varies and repeats for different files I've tried.I've tried it with AVMutableComposition. Same result.Maybe I'm doing something wrong? Or am I missing something? I want files to be cut exactly by the time I set timeRange property of AVAssetExportSession.
1
0
1.4k
Mar ’20