You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改FFmpeg encode_audio示例转AMR时遇invalid fastbin entry错误求助

问题描述
  • 编译FFmpeg后,运行默认的encode_audio示例,使用MP2编码可正常工作
  • 修改示例代码,将编码ID替换为AV_CODEC_ID_AMR_NB,并调整参数:
    • bit_rate设为12200
    • sample_rate设为8000
    • channel_layout设为AV_CH_LAYOUT_MONO
  • 运行修改后的代码出现invalid fastbin entry (free)错误
  • 确认FFmpeg CLI可正常将音频编码为AMR,排除编译或链接环节问题
解决方法

问题并非AMR编码特有——只要将声道布局改为AV_CH_LAYOUT_MONO,该示例对所有编码格式都会触发错误。根源在于示例中的信号生成代码硬编码为双声道,即使修改了声道布局参数,生成的PCM数据仍保持双声道格式,导致编码时内存操作异常。

需要修改信号生成的代码块:
原示例中生成双声道样本的代码(类似如下):

for (int i = 0; i < nb_samples; i++) {
    samples[0][i] = sin(2 * M_PI * 440 * i / sample_rate);
    samples[1][i] = samples[0][i];
}

修改为单声道版本:

for (int i = 0; i < nb_samples; i++) {
    samples[0][i] = sin(2 * M_PI * 440 * i / sample_rate);
}

同时确保代码中nb_channels参数与AV_CH_LAYOUT_MONO对应设置为1,保证输入PCM数据的声道数与编码参数一致。

内容的提问来源于stack exchange,提问作者Mohammadreza Rostam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:27:12