AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1492214
Accepted
Camille Goudeseune
Camille Goudeseune
Asked: 2019-10-15 09:21:15 +0800 CST2019-10-15 09:21:15 +0800 CST 2019-10-15 09:21:15 +0800 CST

FFmpeg 中哪些音频编码器支持 8 kHz?

  • 772

我有一个旧视频(由 Casio Exilim EX-Z40 制作,如果重要的话),其音频流ffprobe报告为pcm_u8, 8000 Hz, mono, u8.

我想把它转码成现代的东西。

使用 FFmpeg 默认值进行转码失败:

libfaac 不支持这种输出格式!

所以大概 libfaac 不支持 8 kHz,因为-c:a copy可以。

哪些编码器支持 8 kHz 采样率?在这里找到的列表几乎没有提到采样率。

我可以编写脚本来尝试每个已安装的编解码器,从...

ffmpeg -codecs | grep EA`

…直接查看哪些有效?

ffmpeg audio-conversion
  • 4 4 个回答
  • 5195 Views

4 个回答

  • Voted
  1. Best Answer
    llogan
    2019-10-15T09:58:49+08:002019-10-15T09:58:49+08:00

    原生 FFmpeg AAC 编码器 ( -c:a aac) 支持 8000 Hz 采样率:

    ffmpeg -h encoder=aac
    ...
    Supported sample rates: 96000 88200 64000 48000 44100 32000 24000 22050 16000 12000 11025 8000 7350
    

    它将自动选择与输入最匹配的采样率,因此您无需声明-ar:

    ffmpeg -i input.mov -c:a aac output.m4a
    

    FFmpeg 中哪些音频编码器支持 8 kHz?

    aac、aptx、aptx_hd、dca、flac、g723_1、libfdk_aac、libmp3lame、libopus、libspeex、libvorbis、real_144、wavpack、许多 pcm 变体。

    可能还有其他人,但报告supported_samplerates不一致。

    我想把它转码成现代的东西。

    libfaac 多年来一直从 FFmpeg 中删除,并且不被认为是现代 AAC 编码器。你ffmpeg一定很古老。更新使用原生 FFmpeg AAC 编码器,或者编译使用libfdk_aac.

    如果你想要最现代的使用libopus。

    但是当我尝试[aac]时,与原来相比,文件大小增加了,并且一些高频被衰减了。

    由于我怀疑您的ffmpeg年龄很大,您可能会错过编码器的主要质量更新aac。升级和质量可能会提高。

    • 10
  2. Eugen Rieck
    2019-10-15T09:26:49+08:002019-10-15T09:26:49+08:00

    采样率和编解码器是不同的参数。很可能你想要一些类似的东西

    -ar 48000 -c:a aac
    

    从 8KHz 上采样到 48KHz 并压缩到 AAC

    • 5
  3. Rup
    2019-10-16T05:09:18+08:002019-10-16T05:09:18+08:00

    8 KHz 是相当标准的语音,称为“窄带”。如果这是语音,那么您应该有很多选择,尽管 FFmpeg 开箱即用的支持并不多。可能最好的选择是

    • AMR - 您可以将libopencode-amrnb 编译成 FFmpeg以获得支持
    • Opus,将使用 Vorbis CELT 语音编解码器

    然而,8KHz 8 位 PCM 首先不是一个很好的来源:大多数编码器会期望/希望有更好的输入,例如 8 位 G.711 mu-law,它实际上是将 12 位数据编码为 8 位浮点。他们可能无法很好地处理纯 8 位 PCM 输入,因为它可能不适合他们建模的语音模式。

    这也是一个相当小的文件,您的视频容器可能不支持更复杂的编解码器。所以我认为这比它的价值更麻烦,我会让音频保持原样。

    • 2
  4. Peter Cordes
    2019-10-16T08:11:12+08:002019-10-16T08:11:12+08:00

    Opus通常被认为是可用的最佳低比特率编解码器,并且在 8kHz 输入采样率方面没有问题。生成的作品流仍然可以解码为解码器方便的任何采样率。(与其他有损编解码器一样,它在进行 FFT 后基于频带进行压缩。但其他一些编解码器显然只想解码为与输入相同的采样率。正如其他答案指出的那样,您可以让 FFmpeg 在之前重新采样输入将其提供给编解码器,但 Opus 不需要它。

    尝试ffmpeg -c:a libopus -b:a 24k -frame_duration 12024 kbit/s Opus。

    也许值得尝试:-application voip调整“改进的语音清晰度”而不是默认audio配置文件。

    我认为,设置-frame_duration为最高值可以减少开销。您不关心编码器/解码器延迟,因为您只有文件,而不是实时 2 路语音聊天。因此,您可以让它缓冲 120 毫秒的音频并将多个 CELT 或 SILK 帧打包在一起,以减少帧头的冗余。


    最好的 Opus 编码器是免费和开源的libopus( https://opus-codec.org ),因此 FFmpeg 可以直接使用它,不像 AAC 中最好的编码器是闭源的。

    Opus 具有用于极低比特率语音(如 16kb/s)、检测语音甚至切换到低比特率语音专用编码器 (SILK) 的特殊模式。

    Opus 的低比特率编码工具与 HE-AACv2 可以做的类似,请参阅维基百科文章。


    但是当我尝试它时,与原来相比,文件大小增加了......

    有损压缩的部分意义在于您可以选择输出比特率,以权衡质量。例如,大多数编解码器可以-b:a 32k选择 32 kbit/s 的音频比特率。

    (对于视频,您还可以权衡花费在编码上的 CPU 时间,例如 -preset veryslow 与 -preset medium。但压缩音频足够便宜,以至于大多数编解码器没有太多选择来花费更多 CPU 时间来提高比特率与质量权衡。)

    单声道 8 位 8kHz PCM 的比特率为 64 kbit/s = 8 * 8000,因此您的目标是低于此值,否则您不妨保留原始文件。PCM 只是原始样本,因此比特率只是采样率和样本宽度的乘积。就像.bmp位图图像的音频等价物。这是非常低效的,也是发明更好编解码器的原因。(正如您从聆听中知道的那样,为 PCM 节省比特率会在质量和频率范围上付出巨大的代价,因为比特率与采样率是 1:1 绑定的。当您使用有损编解码器在频域中进行量化时,情况并非如此。)


    并且一些高频被衰减了。所以,比-c:a copy

    FFmpeg 的原生 AAC 编码器-c:a aac曾经非常糟糕,而您使用的是旧的 FFmpeg。 https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio表示,截至 2017 年,aac有时比libfdk_aacAAC-LC(低复杂度高比特率)更好。但是,它没有提到 HE-AAC,这就是您想要的低比特率 AAC。

    libfdk_aac 曾经是最好的开源 AAC 编码器,也许现在仍然适用于 HE-AAC。AFAIK,不过,它们都不如最好的非免费 AAC 编码器。

    对于低比特率 AAC,您真的需要 HE-AAC,它添加了更多编码工具https://en.wikipedia.org/wiki/High-Efficiency_Advanced_Audio_Coding。我不确定是否-c:a aac可以这样做。

    https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio列出了各种编码器的一些推荐设置和有用比特率范围。

    但您可能需要 Opus,或者可能需要 AMR-NB(窄带)来获得 4 kbit/s 等比特率。我不知道Opus wiki 文章中质量与比特率的关系图有多早,但它显示 AMR-NB 的质量高于 Opus,低于 8kb/s。

    有了那几位,您可能能够理解语音,但听起来并不好听。这只是哪个编解码器最不可怕的问题。

    • 2

相关问题

  • -map_metadata 抓取多个音频流元数据

  • 最低比特率 ffmpeg 输出的编解码器和设置

  • 如何用ffmpeg 2.0.2保存TS视频流?

  • 快速提取 I 帧到图像

  • 压缩视频可以解码回未压缩的原始格式吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve