ffmpeg实现音频resample(重采样)
下面代码是实现将音频的三大要素:声道,样本,采样率变更的demo
例如双声道变成单声道,44100->48000,float->s16等等。
int AudioResampling(AVCodecContext * audio_dec_ctx,AVFrame * pAudioDecodeFrame,
int out_sample_fmt,int out_channels ,int out_sample_rate , uint8_t * out_buf)
{
//
SwrContext * swr_ctx = NULL;
int data_size = 0;
int ret = 0;
int64_t src_ch_layout = AV_CH_LAYOUT_STEREO; //初始化这样根据不同文件做调整
int64_t dst_ch_layout = AV_CH_LAYOUT_STEREO; //这里设定ok
int dst_nb_channels = 0;
int dst_linesize = 0;
int src_nb_samples = 0;
int dst_nb_samples = 0;
int max_dst_nb_samples = 0;
uint8_t **dst_data = NULL;
int resample