剑痴乎

  • 首页
  • 文章分类
    • 音视频
    • WebRTC
    • 编程之美
    • Linux
    • Windows
    • 生活点滴
    • 校园生活
  • 参考
    • API参考
    • 实用工具
    • 测试音视频
    • 文档
  • 留言板
  • 关于
剑痴乎
代码为剑,如痴如醉
  1. 首页
  2. 音视频
  3. 正文

ffmpeg视频编码YUV与AVFrame对应关系

2019年3月24日 3186点热度 2人点赞 2条评论

最近群里有人问:NV12格式,怎么对应AVFrame中的data[0],data[1],data[2]。其实ffmpeg视频编码,YUV与AVFrame对应关系很简单。

在视频编码时,我们需要把YUV数据拷贝到AVFrame.data中,视频编码有硬件加速以及非硬件加速两种,所以对应关系也有两种。

硬件加速编码

指通过显卡进行硬件加速编码,例如指定vaapi进行编码。使用硬件加速编码时,YUV输入格式一般都是NV12,我做过的Intel以及Nvidia编码都是这样。之所以使用NV12格式,在Intel开发文档有这样说明:

1
2
3
4
Based on the NV12 color format: Decode/encode and VPP operations use NV12 because this
provides better performance than other formats such as YUV. While it is possible to include color
conversion filters it is best if pipelines can be arranged to minimize conversion steps by doing as
much consecutive work in NV12 as possible.

因为ffmpeg底层也是调用相关显卡SDK做硬件加速编码,所以我们把YUV数据拷贝给AVFrame时,也得按NV12格式。对于NV12格式,Y数据在最前,接着是UV交错排布,类似这样:YYYYYYYY UVUV,所以对于AVFrame,我们得把Y数据拷贝data[0],UV数据拷贝给data[1]。

1
2
AVFrame.data[0] : YYYYYYYY
AVFrame.data[1] : UVUV

非硬件加速编码

指通过CPU进行编码,例如指定libx264,libx265进行编码。对应关系就比较简单了,YUV三个分量数据依次对应data[0],data[1],data[2]。

1
2
3
AVFrame.data[0] : YYYYYYYY
AVFrame.data[1] : UU
AVFrame.data[2] : VV

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: ffmpeg 编解码 音视频
最后更新:2019年3月25日

Jeff

管理员——代码为剑,如痴如醉

打赏 点赞
< 上一篇
下一篇 >

文章评论

  • brandon1024

    您好,我想请问一下关于ffmpeg软件开发视频编码的问题。我使用的inter集成显卡,想使用硬件进行编码。按照你的博客驱动已经完全安装好了,但是在ffmpeg代码中,始终无法成功打开硬件编码器。一直提示我输入的视频格式不对,我该成NV12格式也提示我输入格式不对,要不就是提示编码器ID或者type不对,手动设置了ID和type,又提示我需要硬件输入视频帧,最近项目急需硬件编码功能,希望您能在百忙之中回复一下。解决燃眉之急,必将重谢!

    2019年7月4日
    回复
    • Jeff

      @brandon1024 请留下邮箱或其他联系方式,私聊

      2019年7月5日
      回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    回复 Jeff 取消回复

    这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

    文章目录
    • 硬件加速编码
    • 非硬件加速编码
    相关文章
    • Intel平台硬件加速视频编解码开发
    • Ubuntu vaapi-ffmpeg开发环境搭建
    • 安防视频播放秒开优化
    • mp4文件elst研究
    • avcodec_decode_video2解码得不到图像

    COPYRIGHT © 2025 jianchihu.net. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang