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 ...
随机推荐
- distroless 镜像介绍及 基于cbl-mariner的.NET distroless 镜像的容器
1.概述 容器改变了我们看待技术基础设施的方式.这是我们运行应用程序方式的一次巨大飞跃.容器编排和云服务一起为我们提供了一种近乎无限规模的无缝扩展能力. 根据定义,容器应该包含 应用程序 及其 运行时 ...
- RPA应用场景-自动轮询汇总报表
场景概述 自动轮询汇总报表 所涉系统名称 券商披露网站 人工操作(时间/次) 36小时 所涉人工数量 1 操作频率 每月 场景流程 1.每月初机器人自动登录网站轮询36家券商披露的财务报告,并下载 2 ...
- IDEA Unicode码转中文
1.打开设置 2.打开文件编码设置,按如图设置
- 温湿度监测系统设计:基于 STM32 的温湿度变送器的设计与实现
前言:这个是2018年上半年完成的,这里只贴出硬件设计部分,软件设计部分可以看上位机说明书. 设计总说明 随着科学技术的不断发展,高集成度.高精度.高可靠性的一体化温湿度变送器开始 得到广泛的应用.同 ...
- Linux操作系统(5):网络命令
Linux 网络环境配置①自动获取 缺点: linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样.这个不适用于做服务器,因为我们的服务器的 ip 需要时固定的. ②直 接 修 ...
- 基于SqlSugar的开发框架循序渐进介绍(11)-- 使用TypeScript和Vue3的Setup语法糖编写页面和组件的总结
随着Vue3和TypeScript的大浪潮不断袭来,越来越多的Vue项目采用了TypeScript的语法来编写代码,而Vue3的JS中的Setup语法糖也越来越广泛的使用,给我们这些以前用弱类型的JS ...
- 软件测试—Day2
day2 Q:面试过程中,性能测试你测试什么?关注的点是什么? A:程序的响应时间,系统的吞吐量,以及并发用户数,和tps,qps,以及DB的IOPS,和服务器的系统资源(CPU和内存).通过一定的工 ...
- jdbc 01: 连接mysql,并实现数据插入
jdbc连接mysql,并实现数据插入 package com.examples.jdbc.o1_连接与插入; import java.sql.*; /* jdbc数据库连接六步 */ public ...
- kube-scheduler的调度上下文
前一章节了解到了kube-scheduler中的概念,该章节则对调度上下文的源码进行分析 Scheduler Scheduler 是整个 kube-scheduler 的一个 structure,提供 ...
- 图的存储结构大赏------数据结构C语言(图)
图的存储结构大赏------数据结构C语言(图) 本次所讲的是常有的四种结构: 邻接矩阵 邻接表 十字链表 邻接多重表 邻接矩阵 概念 两个数组,一个表示顶点的信息,一个用来表示关联的关系. 如果是无 ...