录制音频编码
主要流程
- 权限申请
- 在Mac平台,需要在Info.plist中添加麦克风的使用说明,申请麦克风的使用权限
- 注册设备
- 获取输入格式对象
- 打开设备
- 采集数据
- 释放资源
注意事项
在Mac平台,需要在Info.plist中添加麦克风的使用说明,申请麦克风的使用权限
录音属于耗时操作,为了避免阻塞主线程,最好在子线程中进行录音操作。
播放音频编码
主要流程:
- 初始化子系统
- 打开音频设备
- 打开文件
- 开始播放
- 回调函数
- 释放资源
视频录制
主要流程
-
依赖库
-
宏定义
-
权限申请
- NSCameraUsageDescription
-
注册设备
-
获取输入格式对象
-
打开输入设备
-
打开输出文件
-
采集视频数据
-
释放资源
音频重采样
音频重采样(Audio Resample):将音频A转换成音频B,并且音频A、B的参数(采样率、采样格式、声道数)并不完全相同。
重采样的意义:有些音频编码器对输入的原始PCM数据是有特定参数要求的,比如要求必须是44100_s16le_2。但是你提供的PCM参数可能是48000_f32le_1。这个时候就需要先将48000_f32le_1转换成44100_s16le_2,然后再使用音频编码器对转换后的PCM进行编码。
重采样命令行
通过下面的命令行可以将44100_s16le_2转换成48000_f32le_1。
ffmpeg -ar 44100 -ac 2 -f s16le -i 44100_s16le_2.pcm -ar 48000 -ac 1 -f f32le 48000_f32le_1.pcm
编程
音频重采样需要用到2个库:
- swresample
- avutil
函数的实现:
- 变量定义
- 创建重采样上下文
- 初始化重采样上下文
- 创建缓冲区
- 读取文件数据
- 刷新输出缓冲区
- 回收释放资源
网友评论