美文网首页ios 开发
音视频录制与播放

音视频录制与播放

作者: iOS小洁 | 来源:发表于2022-12-27 21:20 被阅读0次

录制音频编码

主要流程

  • 权限申请
    • 在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

函数的实现:

  • 变量定义
  • 创建重采样上下文
  • 初始化重采样上下文
  • 创建缓冲区
  • 读取文件数据
  • 刷新输出缓冲区
  • 回收释放资源

相关文章

网友评论

    本文标题:音视频录制与播放

    本文链接:https://www.haomeiwen.com/subject/wetoqdtx.html