在nginx-http-flv-module中支持H.265(HEVC)

12 篇文章 6 订阅
12 篇文章 5 订阅

众所周知,FLV规范不支持H.265,并且近年来各大浏览器都逐渐不支持Flash,Adobe也宣布到2020年底不再支持Flash。作为FLV相关技术的所有者,Adobe估计也没动力更新规范来支持H.265;外加H.265标准的一些专利所有者的授权方案被指抢钱,更加打击了很多软件厂商的积极性。

从H.265标准出来没多久,就有人请求Adobe在FLV规范中加入对H.265的支持:

Solved: H265 support - Adobe Community - 5657976

Tracker

但是很遗憾,Adobe至今没有更新FLV规范。FFmpeg社区也曾提到,如果Adobe不更新规范,那么他们也不会在FLV中支持H.265。

那在FLV中支持H.265有什么难度吗?答案是几乎没什么难度,只要增加一个新的编码ID表示H.265就可以了。国内已经有支持封装/解封H.265的FLV的FFmpeg补丁,比较常见,不再列出,比较统一的编码ID是12。封装(推流)/解封(播放)的问题解决了,服务器也需要做相应的修改。除了增加一个编码ID外,还需要提取H.265视频编码中一个新增的结构VPS(Video Parameter Set),播放请求到来后,要把这个结构的内容发送给播放器。

网上已有不少支持H.265视频编码的FLV开源方案,基本上都能运行,但是对VPS结构的解析比较粗糙。前段时间在nginx-http-flv-module的基础上加入了对H.265的支持,测试没有问题,测试环境如下:

OS:Debian GNU/Linux 7.8

Publisher:最新版本的FFmpeg+支持H.265视频编码的FLV补丁

Player:B站的开源播放器ijkplayer,支持H.265视频编码的FLV补丁(只支持解封,不支持封装)

Server:nginx-http-flv-module+支持H.265视频编码的FLV补丁

测试截图如下:

推流
打开播放连接
流媒体详情1
流媒体详情2

注意,这部分代码没有开源,ijkplayer的demo原生也不支持输入网络URL,需要修改部分代码。

今天有网友问我修改过的代码是否支持HTTP-FLV方式播放H.265的视频,还真没测试过。刚才通过修改过的FFmpeg源代码,在configure时添加--enable-ffplay选项,编译出ffplay,测试是支持的,测试截图如下图所示:

HTTP-FLV方式支持H.265编码的视频

有需要的可以通过下面的联系方式联系我:

已删。

因为之前跟很少几个网友闹了不愉快,在此重申一下,此部分代码不开源也不免费,我上文也提到过,网上支持H.265的方案很多,但是解析VPS很粗糙,所以在stat里看不到流的详情。另外,最新的HLS规范要求如果视频编码是H.265,那么封装格式必须是fMP4,所以网上很多支持H.265的HLS没用。

不过,如果给nginx-http-flv-module贡献过重要功能或者修复过重大bug的,我免费赠送。这么做的原因是nginx-http-flv-module开源已经3年多了,社区参与度并不高,大多数工作都是我一个人义务维护的(当然感谢很多网友的测试,bug反馈和PR),还有一些公司集成项目后对外宣称自主研发,BSD-2协议已经很宽松了,允许商用,但是起码得保留我的LICENSE吧。

最后,有问题请先看nginx-http-flv-module的README或者README.CN,前者是英文,后者是中文。之前有个网友问了个问题,我想着README上已经写明了,就回答README上有的我一概不予回答。结果该网友理直气壮地说我态度不好,一句话的事要用很多废话来包装。拜托,我的时间也是时间,问题多的时候我要面对的不只你一个人,你也没给我钱,我没义务给你解答各种问题。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值