欢迎光临
我们一直在努力

FFmpeg6麦克风pcm录音实战——mp3/aac/m4a格式都是支持的

可以这么说,用FFmpeg的API搞定麦克风的mp3/aac录音,相当于是音视频开发中前进的不大不小的一步,录音的整个过程其实和推流几乎相同,包含取流、封装(复用)、编码、收尾等工作,搞明白了录音,推流就比较简单了,推流的关键是设置好复用器参数和做好音视频同步。录音程序中用到了30多个API函数,这些也是音视频开发中的高频函数,必须熟练掌握,AVPacket和AVFrame这两个结构体需针对音视频熟悉常用的参数设置。我的这个专栏全是音视频相关的内容,并且会一直更新到300篇以上的内容,几乎涵盖音视频开发的大多数使用场景,如果对您有帮助,就请订阅本专栏吧,非常感谢您的支持,您的支持是我创作的最大动力!

目录

一、整体架构

二、核心 API 全景表(按执行顺序)

阶段 1:初始化库

阶段 2:打开麦克风(Input Device)

阶段 3:初始化编码器(仅 AAC/MP3 需要,WAV 跳过)

阶段 4:初始化复用器(Muxer / Output)

阶段 5:重采样(可选,格式/采样率不匹配时才需要)

阶段 6:编码循环(仅 AAC/MP3)

阶段 7:写出与收尾

三、平台差异速查

四、FFmpeg6关键变更(踩坑重灾区)

 旧写法(已废弃/移除)

新写法(FFmpeg6)

五、两种输出模式对比

模式 A:输出 WAV(PCM 裸数据,最简单)

模式 B:输出 AAC(需要编码)

六、完整代码框架(WAV 模式)

录音核心代码

程序运行截图

保存的录音文件

七、调试技巧

八、一键命令行对照

九、总结

十、参考链接


觉得有用,就请您帮忙点赞转发收藏吧,您的鼓励是我创作的动力,多谢看官。 由于能力水平有限,文中的错误或不严谨的地方在所难免,还请批评指正。

本文基于 FFmpeg 6.x​ 最新 API,系统梳理了跨平台(Windows dshow / Linux ALSA / macOS avfoundation)麦克风采集到音频文件输出的完整流程。

核心认知:麦克风采集到的 AVPacket本身就是 PCM 裸数据,无需解码即可使用。输出分为两种模式:

  • WAV 模式:PCM 直接写入,不需要编码器、不需要 PTS 管理、不需要 flush,流程极简——打开设备 → avformat_write_header→ av_read_frame→ av_interleaved_write_frame→ av_write_trailer。

  • AAC/MP3 模式:需要额外经过编码器(avcodec_send_frame/ avcodec_receive_packet),写出前必须做 PTS 时间基转换(av_packet_rescale_ts内部调用 av_rescale_q),结束时送

赞(0)
未经允许不得转载:171主机测评 » FFmpeg6麦克风pcm录音实战——mp3/aac/m4a格式都是支持的
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址