AV_SAMPLE_FMT_FLTP转为AV_SAMPLE_FMT_S16P(ffmpeg)

在使用ffmpeg解码aac的时候,如果使用avcodec_decode_audio4函数解码,那么解码出来的会是AV_SAMPLE_FMT_FLTP 格式的数据( float, 4bit , planar), 如果我们希望得到16bit的数据(如AV_SAMPLE_FMT_S16P数据),那么我们需要转换一下:




解決方式:
   將 samples 由 32bits 转为16bits. 参考 ffmpeg samplefmt.h
   若 sample 是 AV_SAMPLE_FMT_FLTP,則 sample 會是 float 格式,且值域为 [-1.0, 1.0]
   若 sample 是 AV_SAMPLE_FMT_S16, 則 sample 會是 int16 格式,且值域为 [-32767, +32767]

 

AV_SAMPLE_FMT_FLTP转为AV_SAMPLE_FMT_S16P(ffmpeg)_第1张图片

AV_SAMPLE_FMT_FLTP转为AV_SAMPLE_FMT_S16P(ffmpeg)_第2张图片

你可能感兴趣的:(转换,ffmpeg)