如何支持RTSP播放H.265(HEVC)流

简介: 随着H.265的普及,越来越多的开发者希望大牛直播SDK能支持低延迟的RTSP H.265播放,并分享相关经验:实现思路:对rtsp来说,要播放h265只要正确解析sdp和rtp包即可. 下面对这些相关内容做一些介绍.

随着H.265的普及,越来越多的开发者希望大牛直播SDK能支持低延迟的RTSP H.265播放,并分享相关经验:


实现思路:


对rtsp来说,要播放h265只要正确解析sdp和rtp包即可. 下面对这些相关内容做一些介绍.


1. H265 Nal Unit Header 简单介绍:


H264的Nal Unit头是一个字节,265变成两个字节:

20180725173518898.png

F: 1 bit. forbidden_zero_bit. 265要求是0,是1的话指示语法违规等.


Type: 6 bits. Nal类型. vps是32, sps是33, pps是34, 前缀sei是39. IDR是19和20.


LayerId: 6 bits. nuh_layer_id. 现在是0,将来可能扩展用.


TID: 3 bits. nuh_temporal_id_plus1. TemporalId 是TID-1.


2. SDP 参数介绍:


2.1 IETF 分配给h265的媒体子类型如下:

Type name: video
Subtype name: H265

可选参数:

profile-space, tier-flag, profile-id, profile-compatibility-indicator, interop-constraints,level-id,
sprop-sub-layer-id, recv-sub-layer-id, max-recv-level-id, tx-mode, sprop-vps, sprop-sps, sprop-pps

等等, 具体请参考相关

文档,建议解析sprop-vps, sprop-sps, sprop-pps.


2.2 SDP 举例:

m=video 0 RTP/AVP 96
a=rtpmap:96 H265/90000
a=fmtp:96 profile-space=0;profile-id=0;tier-flag=0;level-id=0;interop-constraints=000000000000;sprop-vps=QAEMAf//AIAAAAMAAAMAAAMAAAMAALUCQA==;sprop-sps=QgEBAIAAAAMAAAMAAAMAAAMAAKACgIAtH+W1kkbQzkkktySqSfKSyA==;sprop-pps=RAHBpVgeSA==

注意编码名称必须是:H265, Clock reate必须是90000.


3. RTP 打包格式


实际中其实就用到两种格式,一种是一个nal单元打包到一个rtp包中。一种是nal单元比较大,分片打包在多个rtp中.


3.1 单个Nal单元打包:

v2-2172b8be1e9ef1f9b60f7f020feb3dc4_hd.jpg

v2-4a939f609eaf7c25952da852141933ac_hd.jpg

PayloadHdr 把 NAL单元头填入就好.,


3.2 Nal单元分片打包:

v2-0ea57457a83ff1c8a9a9805aaa5f1183_hd.jpg

PayloadHdr还是拷贝NAL单元头,但是要把Type换成49. FU header 就一个字节,格式如下:

+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|S|E| FuType |
+---------------+

S:为1表示第一个分片。 E:为1表示表示最后一个分片。FuType就是实际的Nal type类型。


4. 小结:


h265很多和h264相似之处,都有sps和pps,用00 00 00 01进行nal 单元分隔。


相关资料分享:RTP Payload Format for HEVC:http://pike.lysator.liu.se/docs/ietf/rfc/77/rfc7798.xml

相关文章
|
存储 数据建模 数据库
初探多维表格
最近调研学习了一些多维表格产品,记录一下自己收获的基础认知。在线表格的基础结构是单元格,横向纵向拓展的单元格的集合,就构成了一张工作表。单元格之间可以任意关联,非常灵活。在线表格的适用面很广,能够在数据收集和分析、财会统计等场景发挥重要的作用。在我试图寻找国外的多维表格产品时,发现很少有用「表格」来描述自己的。比如 Airtable 对自己的介绍是:一个构建协同应用的低代码平台。目前国内处于前沿的
1814 0
初探多维表格
|
2月前
|
存储 缓存 弹性计算
2026年阿里云服务器活动价格参考:包月和按年付费最新活动价格整理分享
2026年阿里云服务器活动价格参考,目前轻量应用服务器2核2G38元1年,经济型e实例2核2G特惠价99元1年,通用算力型u1实例2核4G5M特惠价199元1年。除了这三款特价之外,九代计算型c9a、通用型g9a等实例规格的云服务器包月和包年均有优惠。不同配置与实例规格的云服务器价格各异,以下小编整理的阿里云服务器包月和按年付费最新活动,以供大家对比参考和选择。
|
编解码 监控 网络协议
如何用魔法般的步骤实现RTSP推送H.264与H.265(HEVC),打造震撼视听盛宴,让每一帧都充满魔力!
【9月更文挑战第3天】实现RTSP流媒体服务推送H.264和H.265编码视频是现代视频监控及直播平台的关键技术。本文详细介绍环境搭建、编码配置及服务器与客户端实现方法。首先,通过FFmpeg捕获视频并编码成RTSP流,接着使用VLC等工具接收播放。此外,还提供了C++示例代码,演示如何利用libv4l2和FFmpeg自定义服务器端实现。希望本文能帮助读者成功搭建RTSP视频流系统。
2744 1
|
编解码 监控 网络协议
如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频
本文详细介绍了如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频。内容涵盖环境搭建、编码配置、服务器端与客户端实现等方面,适合视频监控系统和直播平台等应用场景。通过具体命令和示例代码,帮助读者快速上手并实现目标。
3898 6
|
存储 缓存 NoSQL
redis缓存优化
采用获取一次缓存,如果为空的情况,获取分布式锁,让一个线程去重建缓存,另外的线程未获取到锁的情况,休眠短时间,然后再自旋获取缓存。
286 0
【亲测有效】装了双系统后在ubuntu下耳机没有声音的解决方法
【亲测有效】装了双系统后在ubuntu下耳机没有声音的解决方法
|
弹性计算 小程序 云计算
2核2G服务器价格多少, 2024年阿里云2核2G3M服务器一年仅需61元
随着云计算技术的飞速发展,云服务器已经成为了许多个人和企业用户的首选。在众多的云服务提供商中,阿里云凭借其稳定的性能、高效的服务和合理的价格,赢得了广大用户的信赖。
|
算法 调度 Python
Python高级算法——贪心算法(Greedy Algorithm)
Python高级算法——贪心算法(Greedy Algorithm)
1227 3
|
Kubernetes Linux Docker
如何保存 / 同步多架构容器 Docker 镜像
如何保存 / 同步多架构容器 Docker 镜像
|
存储 前端开发 JavaScript
前端代码托管:存储库管理综合指南
前端代码托管:存储库管理综合指南
351 0

热门文章

最新文章