请稍等 ...
×

采纳答案成功!

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

关于buffersink的参数疑问

buffersink的参数,也就是pix_fmts有几个疑问想请教下老师:(基础的课已经看过了,YUV格式这些都了解了)
1.为什么要设置pix_fmts[]={AV_PIX_FMT_YUV420P, AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE};?
2.这个参数可以理解成是设置经过filter处理后的frame的像素格式吗?
3.这里面有YUV420P和GRAY8参数,为什么后面的课程中直接默认处理后的frame是GRAY8格式而不是YUV420P格式?
4.如果这个pix_fmts再加上一个成员AV_PIX_FMT_YUV444,那么怎么控制经过filter处理后的frame像素格式是YUV444?
还麻烦老师对以上问题逐一做一下解释,我纠结好久了…

正在回答 回答被采纳积分+3

1回答

李超 2022-05-23 06:57:36

第一个格式的问题,在列表中列出的格式,表示经过filter 处理后,要输出的数据格式有哪些。你告诉filter 之后,当原始数据经过filter 处理后,你就可以用对应的格式去访问它们了。比如你输出里有yuv444格式,经filter 处理后你就得到了yuv444数据;第二个问题,我后面直接用GRAY8,是因为我只需要这一种输出数据;第三个问题应该在问题一的回答了

0 回复 有任何疑惑可以回复我~
  • 提问者 MxDing #1
    老师,我还是有点疑问,比如pix_fmts[]={AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV444,AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE};用av_buffersink_get_frame只能获取一帧frame,如何控制这个frame是YUV444还是GRAY8?
    回复 有任何疑惑可以回复我~ 2022-05-23 14:04:12
  • 李超 #2
    如果data[0],data[1],data[2]中的数据都有,且一样大说明是YUV444;如果data[0],data[1],data[2]都有,但不一样有可能是YUV420;如果只有data[0]说明是GRAY,显然YUV444与YUV420,有冲突,不能同时存在
    回复 有任何疑惑可以回复我~ 2022-05-23 18:03:41
  • 提问者 MxDing 回复 李超 #3
    但是不能控制生成的frame是什么格式吗?这么说frame生成的像素格式是随机的吗?随机从pix_fmts选取一种格式?
    回复 有任何疑惑可以回复我~ 2022-05-24 13:51:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信