Windows平台真实时毫秒级4K H264/H265直播技术方案
背景
在刚提出4K视频的时候,大多数人都觉得没有必要,4K的出现,意味着更高的硬件规格和传输要求,1080P看的很爽、很清晰,完全满足了日常的需求。随着电视的尺寸越来越大,原本1080P成像已经无法满足人们对于细节的极致追求,4K视频不仅成像更细腻,在细节处理上优势也非常明显,颜色也更亮丽、饱满,逼真,给人身临其境的感觉。4K视频具有高分辨率、宽色域、高动态范围等优势,随着5G技术和H.265(HEVC)编码标准的出炉,4K视频直播迎来了曙光。
一张图解释4K VS 1080P
1080p
Often, 1080p is referred to as “Full HD.” In a 1080p television, there are 1,920 columns multiplied by 1,080 rows for a total of 2,073,600 pixels — more than twice as many pixels as you’ll find in a 720p screen. For a while now, 1080p has been the industry standard for high-definition displays, and most content (that is, television broadcasts, shows, and movies) is produced and distributed in 1080p.
4K Ultra HD
The next level of HD is 4K — often called “Ultra HD” or UHD. Technically, the name is a bit of a misnomer, because there are 3,840 columns and 2,160 rows of pixels, which is why you’ll occasionally see this resolution referred to as 2160p. That’s a total of 8,294,400 pixels, which is four times as many pixels as a Full HD 1080p display and nine times as many pixels as a 720p display.

Windows平台真实时4K直播解决方案
先来解释下什么是实时视频,实时视频就是视频图像从产生到消费完成整个过程人感觉不到延迟,只要符合这个要求的视频业务都可以称为实时视频。关于视频的实时性归纳为三个等级:
- 伪实时:视频消费延迟超过 3 秒,单向观看实时;
- 准实时: 视频消费延迟 1~3 秒,能进行双方互动但互动有障碍;
- 真实时:视频消费延迟 < 1秒,平均 500 毫秒。
基于英伟达显卡硬编码(NVIDIA NVENC)的RTMP、RTSP低延迟技术方案:
4K相当于4个1080P,Windows平台软编码有些困难,特别是h265,姑且不说4K软编,4K软解在一些配置一般的机器都比较吃力,基于此,大牛直播SDK(Github)实现了Windows平台特定机型硬编、硬解码低延迟解决方案。
- 针对编码这块,我们实现了基于英伟达显卡硬编码(NVIDIA NVENC)的RTMP、RTSP低延迟技术解决方案,无论是H265还是H264 4K 30fps都能编的动(以下测试截图,基于GeForce RTX 2060显卡);
- 针对解码播放,特别是Windows平台多路播放诉求下,我们实现了Windows平台特定机型硬解码。
通过特定机型硬编码、解码整体技术方案下,我们把4K下的RTMP的整体延时控制在180-300毫秒,实现了真实时技术解决方案,无图无真相:
RTMP扩展H265直播
摄像头采用“海康威视监控摄像头 800万4K超清USB直播摄像头 网络课程远程视频会议 台式机电脑摄像机 2CS54U0B-SD”。
RTMP推送端H265 4K硬编码配置(对应 SmartPublisherDemo.exe):

RTMP播放端 H265 4K硬解码效果(对应 SmartPlayer.exe):

RTMP H265 4K编码和解码GPU, CPU占用情况:


RTMP H265 4K延时效果:

从图上可以看出延时也就100多毫秒。
RTMP H264 直播
RTMP推送端H264 4K硬编码配置(对应 SmartPublisherDemo.exe):

RTMP播放端H264 4K硬解码效果(对应 SmartPlayer.exe):

RTMP H264 4K 硬编解码GPU, CPU占用情况:


RTMP H264 4K直播低延时效果:

总结:
从整体测试来看,英伟达硬编码(NVENC)能达到期望的效果,可以满足毫秒级低延时大分辨率需求,同时NVENC也提供了灵活的码率控制策略来满足不同的编码需求。
稳定性好,连续运行多个小时编码器也未出问题。除了RTMP协议之外,搭配RTSP协议也可正常使用,无论是智慧党建、会议同屏还是基于5G+4K的其他传统行业解决方案,都是非常好的选择。
大牛直播SDK:https://github.com/daniulive/SmarterStreaming
NVIDIA VIDEO CODEC SDK下载地址 https://developer.nvidia.com/nvidia-video-codec-sdk
支持编码的显卡型号 https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new#Encoder
Windows平台真实时毫秒级4K H264/H265直播技术方案的更多相关文章
- 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分的解决办法方案
最近操作系统不断地报异常或错误,可能是用得太久了,而刚好工作比较多又不想重新安装系统,但用一段时间后(一天大概有两次)系统就出现各种问题导致无法继续使用真是痛苦万分啊,今天又来了这样的错误: 此实现不 ...
- Windows平台下使用ffmpeg和segmenter实现m3u8直播点播
1.安装windows media service 实现 流媒体服务器功能 2.windows media编码器 实现 直播推流 3.使用 vlc 将 mms://127.0.0.1/live ...
- 从UI Automation看Windows平台自动化测试原理
前言 楼主在2013年初研究Android自动化测试的时候,就分享了几篇文章 Android ViewTree and DecorView Android自动化追本溯源系列(1): 获取页面元素 An ...
- This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms. 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分 解决方案
但web启用了md5加密后 有可能出现这样的错误 This implementation is not part of the Windows Platform FIPS validated cryp ...
- lower_case_table_names和数据库在Linux和windows平台之间的相互迁移问题
MySQL关于 lower_case_table_names 的文档 https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivi ...
- .NET编译项目时出现《此实现不是 Windows 平台 FIPS 验证的加密算法的一部分》处理方法
有用户提出在编译代码时出现源文件“D:\.......ervice.cs”未能打开(“此实现不是 Windows 平台 FIPS 验证的加密算法的一部分.”)的问题,如下图所示: 对于上面的问题,只需 ...
- Windows平台内核级文件访问
1.背景 在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,读写文件.从kernel32的CreateFile/ReadFile/WriteFile函数,到本地系统 ...
- 解决Windows平台通过cURL上传APP到蒲公英pgyer平台时无法使用中文升级描述的问题
解决Windows平台通过cURL上传APP到蒲公英pgyer平台时无法使用中文升级描述的问题 官方上传命令 curl -F file=@"315.apk" -F uKey=XXX ...
- 在Windows及Linux下获取毫秒级运行时间的方法
在Windows下获取毫秒级运行时间的方法 头文件:<Windows.h> 函数原型: /*获取时钟频率,保存在结构LARGE_INTEGER中***/ WINBASEAPI BOOL W ...
随机推荐
- QT字符串高效拼接原理QStringBuilder
这一篇文章讨论QT框架中QT字符串是如何实现高效拼接的. 1. QStringBuilder实例与原理 QT字符串高效拼接例子 备注: (a)上述代码仅仅在s2 = b1时一次性分配能够容纳所有字符串 ...
- BUUCTF-神秘龙卷风
神秘龙卷风 通过提示知道压缩包密码是四位纯数字,通过爆破得到 得到一串编码 看样子应该是brainfuck编码 flag{e4bbef8bdf9743f8bf5b727a9f6332a8}
- 【故障公告】取代 memcached 的 redis 出现问题造成网站故障
6月19日开始,我们将博客站点的缓存服务器从 memcached 换成了 redis,稳定运行了3天,今天上午访问高峰突然出现问题,在 11:00-12:30 期间影响了网站的正常访问,由此给您带来麻 ...
- ArrayList源码深度剖析,从最基本的扩容原理,到魔幻的迭代器和fast-fail机制,你想要的这都有!!!
ArrayList源码深度剖析 本篇文章主要跟大家分析一下ArrayList的源代码.阅读本文你首先得对ArrayList有一些基本的了解,至少使用过它.如果你对ArrayList的一些基本使用还不太 ...
- Java之取余操作 "%"
取模运算与取余运算两个概念有重叠的部分但又不完全一致.主要的区别在于对负整数进行除法运算时操作不同. 对于整形数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商 c = a / b: 2. ...
- StringBuilder的构造方法和append方法
Java中StringBuilder的构造方法 StringBuilder构造方法: public StringBuilder(): 创建一个空白可变的字符串对象,不含有任何内容 public Str ...
- 基于单层决策树的AdaBoost算法原理+python实现
这里整理一下实验课实现的基于单层决策树的弱分类器的AdaBoost算法. 由于是初学,实验课在找资料的时候看到别人的代码中有太多英文的缩写,不容易看懂,而且还要同时看代码实现的细节.算法的原理什么的, ...
- 密码学系列之:使用openssl检测网站是否支持ocsp
目录 简介 支持OCSP stapling的网站 获取服务器的证书 获取OCSP responder地址 发送OCSP请求 一个更加简单的方法 总结 简介 OCSP在线证书状态协议是为了替换CRL而提 ...
- IIS部署的H5的单页面跳转的配置
<?xml version="1.0" encoding="UTF-8"?><configuration> <system.web ...
- 互联网产品前后端分离测试(Eolink 分享)
在互联网产品质量保障精细化的大背景下,根据系统架构从底层通过技术手段发起测试,显得尤为重要,测试分层的思想正是基于此产生的,目前也是较为成熟的测试策略. 一般采用自下而上的测试方式,以最简单的单一前后 ...