SkeyePlayer源码解析系列之支持H265

SkeyePlayer已更新支持H265 RTSP流解码播放。本文介绍H265头解析、解码器支持以及H265视频写入MP4的过程。解析H265 NAL头,解码器使用FFmpeg,处理解码失败情况,并讨论H265关键信息写入MP4的细节。
摘要由CSDN通过智能技术生成

近期SkeyePlayer(windows)更新已全面支持H265的RTSP流的解码播放,这里就支持H265过程做简要介绍;

一、 libSkeyeRTSPClient库已支持H265视频源的RTSP流的拉取和解析

二、H265头解析
H265和H264类似,不过其NAL type格式更多样化,除了SPS,PPS之外,还增加了VPS,下面就针对H265帧nal 头做简单分析;
首先,看X265源码中的H265nal头格式定义:

//H265 NAL type
//this enum have been defined in x265.h
typedef enum tagH265NalUnitType
{
	NAL_UNIT_CODED_SLICE_TRAIL_N = 0,   // 0  
	NAL_UNIT_CODED_SLICE_TRAIL_R,   // 1  

	NAL_UNIT_CODED_SLICE_TSA_N,     // 2  
	NAL_UNIT_CODED_SLICE_TLA,       // 3   // Current name in the spec: TSA_R  

	NAL_UNIT_CODED_SLICE_STSA_N,    // 4  
	NAL_UNIT_CODED_SLICE_STSA_R,    // 5  

	NAL_UNIT_CODED_SLICE_RADL_N,    // 6  
	NAL_UNIT_CODED_SLICE_DLP,       // 7 // Current name in the spec: RADL_R  

	NAL_UNIT_CODED_SLICE_RASL_N,    // 8  
	NAL_UNIT_CODED_SLICE_TFD,       // 9 // Current name in the spec: RASL_R  

	NAL_UNIT_RESERVED_10,
	NAL_UNIT_RESERVED_11,
	NAL_UNIT_RESERVED_12,
	NAL_UNIT_RESERVED_13,
	NAL_UNIT_RESERVED_14,
	NAL_UNIT_RESERVED_15,			
	NAL_UNIT_CODED_SLICE_BLA,       // 16   // Current name in the spec: BLA_W_LP  
	NAL_UNIT_CODED_SLICE_BLANT,     // 17   // Current name in the spec: BLA_W_DLP  
	NAL_UNIT_CODED_SLICE_BLA_N_LP,  // 18  
	NAL_UNIT_CODED_SLICE_IDR,       // 19  // Current name in the spec: IDR_W_DLP  
	NAL_UNIT_CODED_SLICE_IDR_N_LP,  // 20  
	NAL_UNIT_CODED_SLICE_CRA,       // 21  
	NAL_UNIT_RESERVED_22,
	NAL_UNIT_RESERVED_23,

	NAL_UNIT_RESERVED_24,
	NAL_UNIT_RESERVED_25,
	NAL_UNIT_RESERVED_26,
	NAL_UNIT_RESERVED_27,
	NAL_UNIT_RESERVED_28,
	NAL_UNIT_RESERVED_29,
	NAL_UNIT_RESERVED_30,
	NAL_UNIT_RESERVED_31,

	NAL_UNIT_VPS,                   // 32  
	NAL_UNIT_SPS,                   // 33  
	NAL_UNIT_PPS,                   // 34  
	NAL_UNIT_ACCESS_UNIT_DELIMITER, // 35  
	NAL_UNIT_EOS,                   // 36  
	NAL_UNIT_EOB,                   // 37  
	NAL_UNIT_FILLER_DATA,           // 38  
	NAL_UNIT_SEI,                   // 39 Prefix SEI  
	NAL_UNIT_SEI_SUFFIX,            // 40 Suffix SEI  
	NAL_UNIT_RESERVED_41,
	NAL_UNIT_RESERVED_42,
	NAL_UNIT_RESERVED_43,
	NAL_UNIT_RESERVED_44,
	NAL_UNIT_RESERVED_45,
	NAL_UNIT_RESERVED_46,
	NAL_UNIT_RESERVED_47,
	NAL_UNIT_UNSPECIFIED_48,
	NAL_UNIT_UNSPECIFIED_49,
	NAL_UNIT_UNSPECIFIED_50,
	NAL_UNIT_UNSPECIFIED_51,
	NAL_UNIT_UNSPECIFIED_52,
	NAL_UNIT_UNSPECIFIED_53,
	NAL_UNIT_UNSPECIFIED_54,
	NAL_UNIT_UNSPECIFIED_55,
	NAL_UNIT_UNSPECIFIED_56,
	NAL_UNIT_UNSPECIFIED_57,
	NAL_UNIT_UNSPECIFIED_58,
	NAL_UNIT_UNSPECIFIED_59,
	NAL_UNIT_UNSPECIFIED_60,
	NAL_UNIT_UNSPECIFIED_61,
	NAL_UNIT_UNSPECIFIED_62,
	NAL_UNIT_UNSPECIFIED_63,
	NAL_UNIT_INVALID,
}H265NalUnitType;
#endif

我们可以看到其中VPS, SPS和PPS的定义:
NAL_UNIT_VPS, // 32

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SwordTwelve

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值