ffmpeg 音频重采样SwrContext

SwrContext

重采样上下文

创建分配空间

SwrContext *swrContext = swr_alloc();

设置参数

struct SwrContext *swr_alloc_set_opts(struct SwrContext *s,
                                      int64_t out_ch_layout, enum AVSampleFormat out_sample_fmt, int out_sample_rate,
                                      int64_t  in_ch_layout, enum AVSampleFormat  in_sample_fmt, int  in_sample_rate,
                                      int log_offset, void *log_ctx);
out_ch_layout:输出声道
out_sample_fmt:输出音频格式 s16 或者float32(无法播放),
out_sample_rate 采样率

初始化

re = swr_init(swrContext);

清理

void swr_free(struct SwrContext **s)

转化函数

int swr_convert(struct SwrContext *s, uint8_t **out, int out_count,
                                const uint8_t **in , int in_count);

out 指针数组,可能多通道和 视频转化函数sws_scale类似

out_count 单声道的样本数量

例子:

if(avCodecContext==audioCodecContext){
            uint8_t *out[2] = {0};
            out[0] = ( uint8_t *)pcm;

            //nb_samples 单声道样本数量,一般1024个
            int len = swr_convert(
                    swrContext,out,
                    avFrame->nb_samples,
                    (const uint8_t **)avFrame->data,
                    avFrame->nb_samples

                    );
           LOGE("swr_convert len = %d !", len);
       }

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值