在使用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]