全网首发:FFMpeg使用NVIDIA DECODER,解码后的数据转换为YUV420P

参考:

https://blog.csdn.net/quantum7/article/details/107119487

  我们日常所用格式虽然是RGB,视频喜欢YUV420。如上文所述,解码后的数据是NV12,如何转换为YUV420P?

  • 自己写代码进行转换。这个也不难,咱也做过类似的转换。
  • 调用已有函数。

  这个已有的函数在哪里?这可没有人说啊。怎么办?想起之前使用过ffplay,看看这个代码如何处理的。

  • 先找到解码函数,即得到的AVFrame。输出一看,是NV12,确定不是YUV420P。
  • 找到刷屏的地方,使用的就是是YUV420P。
  • 跟踪整个过程,确实看到某个地方,转变为YUV420P。具体处理代码是:
//1280,1280,0
      ret = av_buffersrc_add_frame(       filt_in,  picture);
//0, 0, 0
      ret = av_buffersink_get_frame_flags(filt_out, picture, 0);
//1280, 640, 640

  这两个函数好说,这两个filter是什么?怎么初始化的?能不能精简为简单参数?把代码复制到吾测试代码中,一通删除修改,编译通过。加上输出,果然成功获得YUV420P。

 

  有朋友问,性能怎样?在640x360情况下,去掉、增加转换,没看出什么变化。可能是分辨率不够?解码路数太少?

  能不能直出YUV420P,或者输出时能直接用?各位如果找到了更好办法,可通知一声。

开源库:

https://github.com/quantum6/ffmpeg-nvidia-codec

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柳鲲鹏

能给阁下一点帮助,非常荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值