请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

重采样,创建输入缓冲区的疑问

av_samples_alloc_array_and_samples(src_data, //输出缓冲区地址
src_linesize, //缓冲区的大小
2, //通道个数
512, //单通道采样个数
AV_SAMPLE_FMT_FLT, //采样格式
0);
第一个参数,缓冲区地址,是一个双指针,听课里面,老师所讲,缓冲区是双指针,也就是个二维数据,第一维代表不同类别的缓冲区;
而在读取输入设备数据后,要对缓冲区进行数据copy,用的memcpy,咱们这里只进行了第一个缓冲区的数据copy,也就是src_data[0],
我的疑问是是不是只要是进行重采样,默认只操作第一个缓冲区;
如果需要操作后面的缓冲区,一般会在什么情况下,每一个缓冲区分别代表什么。
因为目前只听到该处,后面还没有听到,暂时请老师解答一下,谢谢。

正在回答

2回答

src_data是一个指针数组,对于音频来说它只用第一个数组指针就够了;对于视频来说它会用到三个;ffmpeg 之所以要这样定义是为了更灵活的使用不同的结构类型;具体用几个有开发者自己说了算

1 回复 有任何疑惑可以回复我~
  • 提问者 音视频雪兔 #1
    好的,谢谢老师。这个后面具体在视频用到了,再深入研究
    回复 有任何疑惑可以回复我~ 2020-12-22 09:25:48
  • 提问者 音视频雪兔 #2
    今天听了视频编码数据准备,知道如果是视频,会用到三个类型,分别对应yuv;如果是rgba,则,可能用到4个数据;一共是8中数据。
    回复 有任何疑惑可以回复我~ 2020-12-22 10:04:09
heaven强 2020-12-21 17:05:04

此问题问的很好,

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信