为什么我运行的时候 输出缓冲区linesize 会比swr_convert返回值(实际转换样本数)大一些,导致直接往文件中写linesize个字节会出现哒哒声?

来源:8-3 实战音频重采样2

TRknight

2022-12-10

请问输出缓冲区的大小dst_linesize是会自动扩充几个字节吗?

// 重采样的返回值为实际转换样本数
        real_convert_samples = swr_convert(swr_ctx,                    // 重采样上下文
                                           dst_data,                   // 重采样输出缓冲区
                                           out_nb_samples,             // 输出单通道最大采样数,可以设置大一些
                                           (const uint8_t **)src_data, // 重采样输入缓冲区
                                           22050);                     // 输入单通道采样数

        av_log(NULL, AV_LOG_INFO, "real convert samples = %d,dst_linesize=%d\n",
               real_convert_samples, dst_linesize);

运行时打印为

[dshow @ 000001958b1f50c0] passing through packet of type audio size    88200 timestamp 544073420000 orig timestamp 544073420000 graph timestamp 544078420000 diff 5000000 麦克风阵列 (Realtek(R) Audio)
packet size is 88200(000001958ca4f580),count = 20
real convert samples = 22050,dst_linesize=176640
写回答

1回答

李超

2022-12-10

你dst_linesize 从哪儿获的?

0
2
李超
那个是函数算出来的,他会根据你传入的参数自己计算
2022-12-11
共2条回复

音视频小白系统入门课 音视频基础+ffmpeg原理

掌握音视频采集、编解码、RTMP传输协议等核心基础

2318 学习 · 813 问题

查看课程