windows 平台 ffmeg h264 硬编码
本文讲述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左右
场景复杂度对软编的影响非常大,对硬编的影响不明显。
如需交流,可以加QQ群1038388075,766718184,或者QQ:350197870
视频教程 播放地址: http://www.iqiyi.com/u/1426749687
视频下载地址:http://www.chungen90.com/?news_3/
Demo下载地址:http://www.chungen90.com/?news_2
windows 平台 ffmeg h264 硬编码的更多相关文章
- iphone上实现H264 硬编码
供ios下h264硬编码sdk,可以生成h264流. 我们的H264 SDK提供了一个理想的软件开发工具包,使您的app可以在iPhone或iPod上实时的访问H264帧数据.SDK提供了一套API功 ...
- Windows平台真实时毫秒级4K H264/H265直播技术方案
背景 在刚提出4K视频的时候,大多数人都觉得没有必要,4K的出现,意味着更高的硬件规格和传输要求,1080P看的很爽.很清晰,完全满足了日常的需求.随着电视的尺寸越来越大,原本1080P成像已经无法满 ...
- iOS视频硬编码技术
iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软 ...
- iOS-VideoToolbox硬编码H264
前言 VideoToolBox是iOS8之后,苹果开发的用于硬解码编码H264/H265(iOS11以后支持)的API. 对于H264还不了解的童鞋一定要先看下这边的H264的简介. 编码流程 我们实 ...
- Windows平台摄像头或屏幕RTMP推送介绍:OBS VS SmartPublisher
好多开发者问道,既然有了OBS,你们为什么还要开发SmartPublisher? 的确,在我们进行Windows平台RTMP推送模块开发之前,市面上为数不多的Windows平台RTMP推流工具当属OB ...
- VPU硬编码
平台是RK3066(福州瑞芯微公司),android 4.2.0,其实时VP8硬编码,与软件编码是ffpmeg,x264,xvid等软编码是有区别的.硬编码主要是依赖于硬件. 硬编码:通过调用Andr ...
- [原创]在Windows平台使用msys2、mingw64和vscode编写和调试C/C++代码
相关名词就不解释了,这里主要讲讲在vscode里怎么配,这里假设大家相关工具已经装好. 题外话:里面的大多数坑都是windows平台和linux平台的差异造成的,如果在linux平台配置,应该会顺利很 ...
- 开发RTSP 直播软件 H264 AAC 编码
上一篇对摄像头预览,拍照做了大概的介绍,现在已经可以拿到视频帧了,在加上 RTSP 实现,就是直播的雏形,当然还要加上一些 WEB 管理和手机平台的支援,就是一整套直播软件. 介绍一些基础概念:RTP ...
- 认识二进制安全与漏洞攻防技术 (Windows平台)
二进制漏洞是指程序存在安全缺陷,导致攻击者恶意构造的数据(如Shellcode)进入程序相关处理代码时,改变程序原定的执行流程,从而实现破坏或获取超出原有的权限. 0Day漏洞 在计算机领域中,0da ...
随机推荐
- AtCoder Regular Contest 083
C - Sugar Water Time limit : 3sec / Memory limit : 256MB Score : 300 points Problem Statement Snuke ...
- AtCoder Regular Contest 064 F - Rotated Palindromes
Problem Statement Takahashi and Aoki are going to together construct a sequence of integers. First, ...
- Eclipse调试程序及项目的导入导出
Eclipse调试程序 调试概述: ① 调试就是测试程序的方法,主要的目的就是解决程序的逻辑问题,流程是:发现问题.修改问题.正确执行; ② 以前我们可以使用System.out.printl ...
- Spring配置文件中使用ref local与ref bean的区别
Spring配置文件中使用ref local与ref bean的区别.在ApplicationResources.properties文件中,使用<ref bean>与<ref lo ...
- Qtree
Qtree Ⅰ 题意:https://vjudge.net/problem/SPOJ-QTREE 带修路径查询最大边权 sol :树链剖分,之后每条重链就是一个连续的区间,拿线段树维护即可 简单讲讲 ...
- PHP分页类(较完美)
<?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $lis ...
- bzoj 3456 城市规划 无向简单连通图个数 多项式求逆
题目大意 求n个点的无向简单连通图个数 做法1 \(f[i]\)表示i个点的无向简单连通图个数 \(g[i]=2^{\frac {i*(i-1)}{2}}\)表示i个点的无向简单图个数(不要求连通) ...
- 16深入理解C指针之---迷途指针
一.若程序中存在迷途指针,轻则导致程序退出,重则使程序出现重大逻辑错误 1.定义:内存已释放,指针依旧指向原始内存,这种指针就是迷途指针 2.迷途指针和指针别名: 1).指针依旧指向已释放的内存,无法 ...
- PHP实现15位身份证号转18位
PHP实现15位身份证号转18位 参考博客: 作者:selfimpr626 来源:CSDN (根据身份证号计算年龄,15位身份证号码转18位) 原文:https://blog.csdn.net/wei ...
- php的fastcgi_finish_request()函数
php的fastcgi_finish_request()函数 功能: 此函数冲刷(flush)所有响应的数据给客户端并结束请求. 这使得客户端结束连接后,需要大量时间运行的任务能够继续运行. 返回值: ...