##关键词
AVAsset MP3 PCM 格式 音频 采样 AVAssetReader AVAssetWriter 输出 转换
本文所有示例代码或Demo可以在此获取:https://github.com/WillieWangWei/SampleCode_MP3ToPCM
如果本文对你有所帮助,请给个Star?
##概述
**本文仅讲解所用技术的基本概念以及将MP3
转成PCM
格式的实际应用,**其他格式的相互转换可以修改示例代码实现。关于AVAsset
的其他使用场景可以参考这里,音频相关的内容可以参考这里。
首先了解一些概念:
#####AVAsset
它包含于AVFoundation
,是一个不可变的抽象类,用来代表一个音视频媒体。一个AVAsset
实例可能包含着一个或多个用来播放或处理的轨道,包含但不限于音频、视频、文本以及相关说明。但它并不是媒体资源本身,可以将它理解为时基媒体的容器。
#####AVAssetReader
我们可以使用一个AVAssetReader
实例从一个AVAsset
的实例中获取媒体数据。
#####AVAssetReaderAudioMixOutput
它是AVAssetReaderOutput
的一个子类,我们可以将一个AVAssetReaderAudioMixOutput
的实例绑定到一个AVAssetReader
实例上,从而得到这个AVAssetReader
实例的asset
的音频采样数据。
#####AVAssetWriter
我们可以使用一个AVAssetWriter
实例将媒体数据写入一个新的文件,并为其指定类型。
#####AVAssetWriterInput
我们可以将一个AVAssetWriterInput
的实例绑定到一个AVAssetWriter
实例上,从而将媒体采样包装成CMSampleBuffer
对象或者元数据集合,然后添加到输出文件的单一通道上。
#####PCM
模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,PCM
就是录制声音时保存的最原始的声音数据格式。
WAV
格式的音频其实就是给PCM
数据流加上一段header数据。而WAV