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

简介: 全网首发: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

目录
相关文章
|
3天前
|
算法 数据处理 开发者
FFmpeg库的使用与深度解析:解码音频流流程
FFmpeg库的使用与深度解析:解码音频流流程
44 0
|
3天前
|
存储 编解码 算法
探索FFmpeg复用:深入理解媒体数据的组织与封装(三)
探索FFmpeg复用:深入理解媒体数据的组织与封装
44 0
|
3天前
|
存储 编解码 数据处理
【FFmpeg 视频基本格式】深入理解FFmpeg:从YUV到PCM,解码到编码(三)
【FFmpeg 视频基本格式】深入理解FFmpeg:从YUV到PCM,解码到编码
51 0
|
3天前
|
存储 编解码 数据处理
【FFmpeg 视频基本格式】深入理解FFmpeg:从YUV到PCM,解码到编码(二)
【FFmpeg 视频基本格式】深入理解FFmpeg:从YUV到PCM,解码到编码
52 0
|
21小时前
|
存储 缓存 调度
FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
《FFmpeg开发实战》第10章示例playsync.c在处理音频流和视频流交错的文件时能实现同步播放,但对于分开存储的格式,会出现先播放全部声音再快速播放视频的问题。为解决此问题,需改造程序,增加音频处理线程和队列,以及相关锁,先将音视频帧读入缓存,再按时间戳播放。改造包括声明新变量、初始化线程和锁、修改数据包处理方式等。代码修改后在playsync2.c中,编译运行成功,控制台显示日志,SDL窗口播放视频并同步音频,证明改造有效。
7 0
FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频
|
3天前
|
存储 编解码 编译器
FFmpeg 7.0 正式登场:全新 VVC 解码器
【4月更文挑战第9天】最新版本的流行视频处理软件FFmpeg 7.0,代号为“Dijkstra”,已正式发布。
45 0
|
3天前
|
存储 编解码 安全
探索FFmpeg复用:深入理解媒体数据的组织与封装(二)
探索FFmpeg复用:深入理解媒体数据的组织与封装
61 0
|
3天前
|
存储 编解码 算法
探索FFmpeg复用:深入理解媒体数据的组织与封装(一)
探索FFmpeg复用:深入理解媒体数据的组织与封装
60 0
|
3天前
|
开发工具
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c(三)
21 0
|
3天前
|
Linux 编译器 数据安全/隐私保护
Windows10 使用MSYS2和VS2019编译FFmpeg源代码-测试通过
FFmpeg作为一个流媒体的整体解决方案,在很多项目中都使用了它,如果我们也需要使用FFmpeg进行开发,很多时候我们需要将源码编译成动态库或者静态库,然后将库放入到我们的项目中,这样我们就能在我们的项目中使用FFmpeg提供的接口进行开发。关于FFmpeg的介绍这里就不过多说明。
84 0