libyuv提高ffmpeg图像转换效率

2021-01-29 10:28:07 浏览数 (1)

ffmpeg压缩视频

  • sws图像格式转换,使用cpu
  • nv12(yuv420sp)图像转h264,使用gpu压缩 压缩灰度图性能对比如下,(avframe的data数组按照通道存储的数据,灰度图格式转换效率最高),在没有优化的情况下,cpu的转换时间会是GPU的2到3倍左右

libyuv

libyuv使用cpu的特殊指令集,对cpu的运算做加速,比sws转换效率高,编译的时候如果cpu不支持ssse、avx等指令集,也基本和sws差不多,而且有时可能更慢

在row.h的宏定义中可以看到,不同的编译支持的指令集不同,使用 添加pragma message可以清除编译时候打开了某块代码 cmakelists.txt文件中添加add_definitions(-D__i386__),使支持x86 cpu的加速

编译完后,性能没有做对比,ffmpeg调用qsv显卡驱动的方式压缩h264、h265(GPU使用率更高,但存储减小50%),不知道为什么,同样的程序运行两次,第一10s,第二次就会编程1s。没有研究过h264算法,很神奇。

0 人点赞