iPhone原生支持的音频格式主要分为核心音频格式和编解码器两类,由iOS/macOS的Core Audio框架提供支持。以下是关键分类:
| 格式 | 优势 | 劣势 | |--------|-----------------------------|-----------------------| | ALAC | 无损压缩,节省空间 | 编码/解码需计算资源 | | AAC | 高音质/体积比,苹果生态首选 | 专利授权限制 | | AIFF | 无损,编辑友好 | 文件极大 | | CAF | 多编码支持,适合开发 | 非通用播放器兼容性差 |
AVAudioRecorder
选择格式(如PCM)。录制ALAC格式音频:
import AVFoundation
let audioSettings: [String: Any] = [
AVFormatIDKey: kAudioFormatAppleLossless,
AVSampleRateKey: 44100.0,
AVNumberOfChannelsKey: 2,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
let recorder = try AVAudioRecorder(
url: URL(fileURLWithPath: "output.m4a"),
settings: audioSettings
)
recorder.record()
转换音频格式(AIFF→AAC):
let inputFile = AVAudioFile(forReading: URL(fileURLWithPath: "input.aiff"))
let outputSettings: [String: Any] = [
AVFormatIDKey: kAudioFormatMPEG4AAC,
AVSampleRateKey: 44100,
AVNumberOfChannelsKey: 2,
AVEncoderBitRateKey: 128000
]
let converter = AVAudioConverter(
from: inputFile.processingFormat,
to: AVAudioFormat(settings: outputSettings)!
)
// 转换逻辑需使用`convert(to:error:inputBlock:)`方法
AVAudioPlayer
或第三方库如AudioKit
)。
解决:使用AVAssetReader
解码或转码为ALAC/AAC。afconvert
命令行工具转换:afconvert
命令行工具转换:.playAndRecord
)避免播放中断。如需进一步处理(如滤波),可结合Accelerate
框架进行DSP操作。