惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
WordPress大学
WordPress大学
爱范儿
爱范儿
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
罗磊的独立博客
博客园_首页
V
V2EX
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
MyScale Blog
MyScale Blog
IT之家
IT之家
H
Help Net Security
Blog — PlanetScale
Blog — PlanetScale
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recent Announcements
Recent Announcements
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
人人都是产品经理
人人都是产品经理

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解
ffmpeg音频解码器的介绍和了解
HelloLLLLL · 2026-05-04 · via 博客园_首页

Audio Decoders

  AC-3(通常指 Dolby Digital)音频解码器主要用于处理 .ac3格式的音频流,常见于 DVD、蓝光及数字电视广播中。-drc_scale是该解码器用来控制动态范围压缩(DRC)强度的关键参数。AC-3 音轨在设计时为了兼顾影院级的动态范围(爆炸声很大,耳语声很小)和家庭观看需求,内置了动态范围控制(DRC)元数据。DRC能在解码时压缩音频的动态范围,让小声变大、大声变小,从而避免你在深夜观影时频繁调节音量。drc_scale参数决定了在解码过程中应用 DRC 的强度比例。它是一个浮点数,默认值通常为 1。drc_scale = 0,完全禁用 DRC。输出原始、未压缩的全动态范围音频。0 < drc_scale ≤ 1,启用部分压缩。数值越小,压缩越轻;数值为 1 时应用标准的完整压缩。drc_scale > 1,启用增强型压缩(非线性)。对大声压级信号进行更强力的限制,同时提升微弱声音。例子:​

ffmpeg -i input.mkv -c:a ac3 -drc_scale 0 output.wav # 禁用 DRC,保留原动态

ffmpeg -i input.ac3 -drc_scale 2.0 output.wav # 启用强力压缩,

flac

  FLAC audio decoder用于还原无损压缩音频的核心组件。能将 .flac文件精准还原为原始的 PCM 音频数据,有任何音质损失。FLAC 解码器核心特性有:1、无损还原:解码后的音频数据与编码前完全一致,常用于音乐存档、母带制作及 Hi-Fi 播放。2、广泛兼容:支持 FLAC 规范中的所有特性,包括高分辨率音频(最高 32-bit/655.35 kHz)、多声道(如 5.1/7.1)及元数据(如封面、CUE 章节)。默认行为:在 FFmpeg 中,只要使用 -c:a flac或默认的自动解码流程,即可调用此解码器。

参数:-use_buggy_lpc,用于解码从‌早期 FLAC 编码器(如 1.1.x 或更早版本)‌ 生成的文件,因为这个早期的编码器的一个算法上有缺陷,后来,新版的解码器修复了这个问题,导致旧版和新版的FLAC编码器的文件再解码时有兼容问题。ffmpeg 在使用这个参数时,就是为了兼容旧版本FLAC编码器编码的文件,开启这个参数,就用对应有缺陷的旧编码算法的解码算法,不开启这个参数,就说明是用的新与修复后的算法对应的解码算法来解码。如果当你发现在没开启这个参数时,解码出来的音频在合成后形成的音频文件出现了播放异常(如爆音、失真),但确认文件未损坏。就可以尝试开启这个参数。例如:

  # 仅在遇到“问题文件”时使用

  ffmpeg -i buggy_file.flac -c:a flac -use_buggy_lpc 1 fixed_output.wav

  # 正常情况下的解码(推荐)

  ffmpeg -i normal_file.flac output.wav

ffwavesynth

  音频也是可以像编程一样,通过特定的语法可以创建出能播放标准声音的脚本文件。这让我联想到一些ai模仿明星的说话的声音,就是因为其声音是可以通过编程来实现让人觉得ai的声音与真人声音听起来很相似。这意味着任何人的声音都在被这人的声音数据被收集齐备后,是可以通过编程来实现模仿这个人的说话声音。一些网络上的骗子就会使用有这种技术的软件。这是题外话。这个ffwavesynth,就可以把这些声音脚本文件,通常是.wave格式的文件,像我们的各种编程语言的编译器一样,解析“编译”脚本的语法,最后程序是生成可执行文件,而这个ffwavesynth组件就会合成出可以被音频设备,如:扬声器、耳机播放出声音的音频数据,它不直接生成文件,它是一个解码器,后续还需要把经过ffwavesynth处理的数据,复用后最终生成一个音频文件。

libcelt decoder wrapper

  ffmpeg里并没有libcelt解码动态库,需要我们自己准备好,而ffmpeg里的libcelt decoder wrapper是对真正的libcelt解码器的封装。libcelt库解码的对象是CELT​编码器编码的音频,CELT 编解码器的出现是为了实时的语言交互,它的延迟很低,但该编码器在2010年就没有人维护,取而代之的是Opus编解码器。针对CELT​编码器编码的这种音频,对使用的ffmpeg是有要求的,在编译ffmpeg源码时,要显示配置 --enable-libcelt,并且系统需预先安装好对应的 libcelt开发包(如 libcelt-dev),这个库我想的话要放到ffmpeg的音频解码器目录,在编译时,需要指定这个libcelt所在目录的路径,否则编译后会找不到此解码器,那编译出来的ffmpeg就无法处理这种音频了。它的使用命令:

  # 使用 libcelt 解码器进行转换

  ffmpeg -c:a libcelt -i old_voice.celt output.wav

  # 或者让 FFmpeg 自动探测(如果流标记正确)

  ffmpeg -i old_voice.celt output.wav

libcelt decoder wrapper

  这个跟libcelt decoder wrapper类似,也是要编译设置,也是一个适配器充当ffmpeg与真正的ibcelt decoder的“胶水”作用。开了ai的介绍,让我想到了以前2000年左右使用GSM电话卡,对没错,这个编码器就是可以用来编解码这种2G时代的手机通话语音的。

libilbc decoder wrapper

  这个也跟libcelt decoder wrapper类似,后面提到某某wrapper都是这个意思。它是用于实时语音通话,核心是为了实时传输中容错抗丢包,现在已被Opus编解码器替代。

libmpeghdec decoder wrapper

  libmpeghdec用于编解码高清广播流媒体领域,被视为杜比全景声(Dolby Atmos)的主要竞争对手。

libopencore-amrnb

  AMR-NB是2G/3G 时代的语音标准,也是早期手机录音(.amr文件)的通用格式。

libopencore-amrwb

  3G/4G 的高清语音编解码器

libopus

  它就是取代libilbc、libcelt的编解码器。