本文讲述windows 平台下ffmpeg如何利用intel media SDK 进行 h264硬编码(测试版本为3.2.2)。

ffmeg硬编编码的流程与软件编码流程相同,唯一不同的地方在初始化encoder。软件编码基本流程前文有

介绍,本文不再赘述。下面介绍硬编编码初始化encoder代码。

int InitEncoderCodec( int iWidth, int iHeight)

{

AVCodec * pH264Codec = avcodec_find_encoder_by_name("h264_qsv");

//AVCodec * pH264Codec = avcodec_find_encoder_by_name("libx264");

//AVCodec * pH264Codec = avcodec_find_encoder(AV_CODEC_ID_H264);

if(NULL == pH264Codec)

{

printf("%s", "avcodec_find_encoder failed");

return -1;

}

outPutEncContext = avcodec_alloc_context3(pH264Codec);

outPutEncContext->gop_size = 12;

//outPutEncContext->framerate = 30;

//outPutEncContext->has_b_frames = 0;

outPutEncContext->max_b_frames = 0;

//outPutEncContext = avcodec_alloc_context3(pH264Codec);

outPutEncContext->codec_id = pH264Codec->id;

outPutEncContext->time_base.num =context->streams[0]->codec->time_base.num;

outPutEncContext->time_base.den = context->streams[0]->codec->time_base.den;

outPutEncContext->pix_fmt = *pH264Codec->pix_fmts;

outPutEncContext->width = iWidth;

outPutEncContext->height = iHeight;

//outPutEncContext->bit_rate = 4* 1024 * 1024;

AVDictionary *options = nullptr;

outPutEncContext->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;;

//av_dict_set(&options,"preset","ultrafast",0); //"ultrafast"s

//av_dict_set(&options,"preset","veryfast",0);

//av_opt_set(outPutEncContext->priv_data,"tune","zerolatency",0);

//av_opt_set(outPutEncContext->priv_data,"profile","baseline",0);

int ret = avcodec_open2(outPutEncContext, pH264Codec, &options);

AVQSVContext *qsv = (AVQSVContext *)outPutEncContext->hwaccel_context;

if (ret < 0)

{

printf("%s", "open codec failed");

return ret;

}

return 1;

}

硬编码与软件编码性能对比(测试机器,I7 5500)

视频复杂度低的情况下(例如编码抓取桌面视频(桌面视频无明显变化) 1080p,25fps):

软件编码所占CPU 在30% -40%之间。硬件编码所在的cpu在18-25左右

视频负载度高的情况下(例如编码抓取桌面视频(桌面播放高清影视视频) 1080p,25fps)

软件编码所占CPU 在50% -70%之间。硬件编码所在的cpu在18-25左右

场景复杂度对软编的影响非常大,对硬编的影响不明显。

如有交流请加流媒体/Ffmpeg/音视频 127903734 ,或QQ350197870。

原文:http://www.cnblogs.com/wanggang123/p/6354485.html

android 硬编码h264,windows 平台 ffmeg h264 硬编码相关推荐

  1. 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台运行的控制台应用程序类型 | 编译 Windows 平台运行的 Android 逆向程序 )

    文章目录 一.Windows 平台运行的控制台应用程序类型 二.编译 Windows 平台运行的 Android 逆向程序 一.Windows 平台运行的控制台应用程序类型 hacktool 工程的类 ...

  2. 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )

    文章目录 一.Windows 平台静态库程序类型 二.编译逆向工具依赖的 Windows 平台静态库程序 一.Windows 平台静态库程序类型 在 Android 逆向通用工具 MobileGame ...

  3. Linux 和 Windows 平台不同的 UCS-2 编码

    2019独角兽企业重金招聘Python工程师标准>>> 以下是有关两个平台 UCS-2 编码的潜规则: 1, UCS-2 不等于 UTF-16. UTF-16 每个字节使用 ASCI ...

  4. Windows平台真实时毫秒级4K H264/H265直播技术方案探讨

    背景 在刚提出4K视频的时候,大多数人都觉得没有必要,4K的出现,意味着更高的硬件规格和传输要求,1080P看的很爽.很清晰,完全满足了日常的需求.随着电视的尺寸越来越大,原本1080P成像已经无法满 ...

  5. Windows平台摄像头或屏幕RTMP推送:OBS VS SmartPublisher

    好多开发者问道,既然有了OBS,你们为什么还要开发SmartPublisher? 的确,在我们进行Windows平台RTMP推送模块开发之前,市面上为数不多的Windows平台RTMP推流工具当属OB ...

  6. Windows平台摄像头或屏幕RTMP推送:OBS还是SmartPublisher

    好多开发者问道,既然有了OBS,你们为什么还要开发SmartPublisher? 的确,在我们进行Windows平台RTMP推送模块开发之前,市面上为数不多的Windows平台RTMP推流工具当属OB ...

  7. Windows平台RTMP/RTSP直播推送模块设计和使用说明

    开发背景 好多开发者一直反馈,Windows平台,做个推屏或者推摄像头,推RTMP或者RTSP出去,不知道哪些功能是必须的,哪些设计是可有可无的,还有就是,不知道如何选技术方案,以下是基于我们设计的W ...

  8. 如何分别在Android、iOS、Windows Phone三大平台进行“触摸屏”开发?

    <移动开发全平台解决方案--Android/IOS/Windows Phone> 源代码下载地址:http://www.devdiv.com/thread-85477-1-1.html 当 ...

  9. 视频编码 MPEG2 MPEG4 DIVX Xvid H264 VC1封装格式MKV AVI RMVB MPG TS扫盲

    先简单说一下,mkv和avi的格式只是封装容器,里面封装的是视频流+音频流.容器不会影响画面质量,影响质量的是容器里面封装的什么东西.所以你换换容器,而里面的东西不换的话,对清晰度字幕音频等是没有影响 ...

最新文章

  1. Lidar激光雷达市场
  2. php能调用easyui窗口,关于jQuery EasyUI window窗口使用实例详解
  3. java私有属性和私有方法_Java 9中什么是私有的?
  4. Vue学习笔记--Vue双向绑定实现原理
  5. 移远EC600低功耗唤醒锁wakelock的使用,QuecPython功耗分析
  6. 基姆拉尔森公式--判断星期几
  7. SG2525_电压模式PWM——科时进商城
  8. 五人表决器课程设计单片机c语言,基于单片机的五人表决器的设计.doc
  9. java实现串口通信 485协议
  10. 4am永远 鼠标按键设置_罗技的MX Master鼠标是苹果Mac系统下最好的鼠标
  11. 健身日记 第二个平台期
  12. 【MySQL】增大字符串长度不会锁表吗
  13. Springboot2.6+thymeleaf实现png和jpg图片格式转换
  14. 从0到1万字贴心讲解单体架构到分布式架构的演变(第一篇)
  15. (Modern Family S01E01) Part 4  PhilClaire  Luke射Alex / Haley邀请Dylan
  16. python 白噪声检验-Python中的白噪声时间训练
  17. SQL Server Management Studio(SMSS)删除连接记录
  18. Python如何做自动化测试?
  19. 无法用 CString 类型的值初始化 CWnd 类型的引用(非常量限定)
  20. Q2日活1.86亿创新高 推特还能打好一场翻身战吗?

热门文章

  1. 推箱子游戏破解方案的MATLAB代码实现
  2. U盘装系统_官方镜像
  3. 1.openpyxl 打开工作簿
  4. 什么是Qi2?新无线充电标准解释
  5. 【GAN】是什么让GAN成为了这5年里深度学习领域最亮的崽?
  6. 如何创建一个开源Javascript库 | Lynda教程 中文字幕
  7. 消息队列 64式 : 2、oslo.messaging消息处理源码分析
  8. 图像插值-双线性插值(bilinear)
  9. android学生信息管理系统PPT讲解,基于Android的学生信息管理及沟通系统的设计与实现毕业论文+选题表+开题报告+设计源码+答辩PPT...
  10. 超声波驱虫器,把蚊蟑鼠蚁全赶跑