【问题标题】:FFmpeg playing audio slowly after conversion from AAC从 AAC 转换后 FFmpeg 播放音频缓慢
【发布时间】:2014-01-16 08:05:55
【问题描述】:

我正在尝试转换 AAC 音频流以进行播放。我发现我需要从 AV_SAMPLE_FMT_FLTP 转换为 AV_SAMPLE_FMT_S16 但是当我这样做时,音频以大约一半的速度播放。

swr = swr_alloc();
assert(av_opt_set_int(swr, "in_channel_layout", audioContext->channel_layout, 0) == 0);
assert(av_opt_set_int(swr, "out_channel_layout", audioContext->channel_layout, 0) == 0);
assert(av_opt_set_int(swr, "in_sample_rate", audioContext->sample_rate, 0) == 0);
assert(av_opt_set_int(swr, "out_sample_rate", 44100, 0) == 0);
assert(av_opt_set_int(swr, "in_sample_fmt", audioContext->sample_fmt, 0) == 0);
assert(av_opt_set_int(swr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0) == 0);
swr_init(swr);

有我要转换的代码。输入采样率为 44100,音频为立体声。

我用

调用代码
swr_convert(swr, &output, aDecodedFrame->nb_samples, (const uint8_t**)aDecodedFrame->extended_data, aDecodedFrame->nb_samples) >= 0)

【问题讨论】:

    标签: audio ffmpeg decode aac transcode


    【解决方案1】:

    您没有显示实际的音频编码代码,所以我推测您可能无法正确处理重采样。请注意,您从重采样操作中读取的数据减少了两倍(即,如果您传递 80 个字节,您将从重采样器中读取 40 个字节)。

    你可以看看我的视频编写代码,去掉音频编码部分。在这里:http://sourceforge.net/p/karlyriceditor/code/HEAD/tree/src/ffmpegvideoencoder.cpp

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2017-07-13
      • 2018-07-14
      • 1970-01-01
      • 2011-06-27
      • 2011-02-24
      • 2011-10-31
      • 2021-04-20
      • 1970-01-01
      相关资源
      最近更新 更多