问题: 因为ffmpeg命令行操作时, 无法使用libfdk_aac, 但是能使用aac编码器,所以aac编码实战我也是用aac编码器的.
我的代码逻辑是: 采样s16le —重采样----> fltp --------> frame ----------->aac编码器 --------------> aac文件
在采样实战中,我发现录制下来的pcm通过s16le播放的时候是正确的, 所以可以认为格式是s16le.
我通过gdb调试, 发现aac编码器接受的采样率codec->supported_samplerates=96000
, 格式codec->sample_fmt=AV_SAMPLE_FMT_FLTP
,
所以我就把44100/s16le的pcm重采样成96000/fltp.
然后把输入到aac编码器中的frame也相应的设置成96000/fltp.
分配resample的输入输出缓冲区时也相应设置
最后开始编码, 把编码的数据写入文件.
疑问:
最后: 因为环境和老师的不一样, 所以编码器也不一样, 导致代码也不一样, 我怀疑就是resample之后的参数和输入到编码器的数据不一致导致的. ,但是运行可以运行播放就不行了
运行结束:
播放ffplay audio.acc
音视频资料太少了, 比学os还难!! 文章有点长, 老师帮帮忙!!! aac编码如果卡住了,对后续学习有没有影响??