RTMP播放器和推送端支持enhanced RTMP H265(enhanced RTMP HEVC)

  Enhancing RTMP, FLV 2023年7月31号正式发布,主要支持了HEVC(H.265)、VP9、AV1视频编码,很多开源项目已支持,我的播放器和推送端也改改,支持下enhanced rtmp H.265(HEVC).

  播放端和推送端connect RTMP server时,要在connect Command对象中加入一个新的name-value对:

property name:fourCcList
property value:Strict Array of Strings

数组项可能是:{"av01", "vp09", "hvc1"}
其中"hvc1"就是H.265(HEVC)

  播放端需要改下FLV VideoTagHeader解析, 也就是根据VideoTagHeader的第一个字节的第0位来判断是否是扩展头,如果这一位是1那就是扩展头,解析扩展头:

/*
* Copyright (C) 1130758427@qq.com. All rights reserved. 
* 问题沟通微信:ldxevt
*/

bool is_ex_header;
if (p[0]&0x80)
    is_ex_header = true;
else
    is_ex_header = false;

if (is_ex_header) {
	auto video_fourcc = (p[1] << 24)|(p[2] << 16)|(p[3] << 8)|p[4];
	if (HEVC == video_fourcc) {
	   // hevc处理
	}else if (VP9 == video_fourcc) {
	   // ....
	}else if (AV1 == video_fourcc ) {
	   // .....
	}
}

  推送端也要处理下,生成HEVC的FLV VideoTagHeader:

/*
* Copyright (C) 1130758427@qq.com. All rights reserved. 
* 问题沟通微信:ldxevt
*/

*p = 0x80;
if (key)
	*p |= (1<<4);
else
	*p |= (2 << 4);

if (pts != dts)
	*p |= 1;
else
	*p |= 3;

p++;

*p++ = 'h';
*p++ = 'v';
*p++ = 'c';
*p++ = '1';

//....

  生成HEVCDecoderConfigurationRecord的FLV VideoTagHeader:

/*
* Copyright (C) 1130758427@qq.com. All rights reserved. 
* 问题沟通微信:ldxevt
*/

*p++ = 0x80|(1 << 4);
*p++ = 'h';
*p++ = 'v';
*p++ = 'c';
*p++ = '1;

//....

  另外就是H.265的编解码, HEVC推荐硬编硬解,安卓和IOS设备一般都支持HEVC硬编解码,调用也很方便,Windows要看具体设备是否支持了。

  支持后测试推送和播放端, 推送端配置:

  播放效果:

 测下来enhanced rtmp h265 延时也不高,Windows、Android等平台的推送和播放端都一起支持了。如需测试请联系qq: 1130758427, 微信:ldxevt 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值