AudioTool.swift 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //
  2. // AudioTool.swift
  3. // ContactPoster
  4. //
  5. // Created by TSYH on 2024/1/24.
  6. //
  7. import AVFoundation
  8. typealias AudioCompletionHandler = (URL?, String?) -> Void
  9. class AudioTool {
  10. /// 创建用于分享库乐队的band文件
  11. func convertToBand(from fileURL: URL, to filePath: String,
  12. bandFileURL: URL,
  13. completion: ((URL?) -> Void)?) {
  14. let copyBandURL = URL(fileURLWithPath: filePath).deletingPathExtension().appendingPathExtension("band")
  15. // 步骤3:复制band文件
  16. try? FileManager.default.copyItem(atPath: bandFileURL.path, toPath: copyBandURL.path)
  17. guard FileManager.default.fileExists(atPath: copyBandURL.path) else {
  18. // 复制失败
  19. completion?(nil)
  20. return
  21. }
  22. // 步骤4:格式转换为aiff
  23. let converter = ExtAudioConverter()
  24. converter.inputFile = fileURL.path
  25. converter.outputFile = copyBandURL.path.appending("/Media/ringtone.aiff")
  26. converter.outputFileType = kAudioFileAIFFType
  27. let success = converter.convert()
  28. guard success,
  29. FileManager.default.fileExists(atPath: copyBandURL.path) else {
  30. // 转换失败
  31. completion?(nil)
  32. return
  33. }
  34. completion?(copyBandURL)
  35. debugPrint("===bandPath: \(copyBandURL)")
  36. }
  37. }