互联网时代,每一次技术革新都会带来商业价值、推动社会进步。然而旺盛的市场需求也会倒推技术的成熟。
从视频行业来看,内容的丰富度在增强,曾经H.264让1080p风暴席卷了全球,但伴随着4K、VR等产业普及,它再也无法引领潮流了。相应的在视频体验过程中,为了保障清晰度,视频码率的要求也在提高。同等的带宽应对更大的码率,画质和卡顿的出现势必也会影响用户体验。反之想要发展,带宽成本是行业无法绕过的一个问题。H.265作为新一代的视频编码标准,顺应时代而生。
今天我们就一起来看下H.265在直播场景中是如何应用的:
H.265(HEVC)是新一代的视频编码算法,与H.264相比,在同等清晰度下,能为视频的存储、传输节约成本,同时,网络带宽的降低也能在同等带宽的条件下给用户带来更好的视频观看体验。下面我们来看下H.265技术如何在直播中实现。下图为典型的直播流程:
- 绿色连线表示H.265支持的协议
- 红色连线表示H.265不支持的协议
- 自定义表示视频直播系统的内部传输协议,可以自由选择。
在涉及到视频编码的地方,就有可能使用H.265,在上面流程中,我们看到有2个地方涉及到编码,分别为: 在采编端提供H.265编码能力和采编端保持H.264,在云端提供H.264到H.265的转码能力,为了使用这两种方案,云端必须做到:
- 在传输上支持H.265。当前的直播上行几乎都会使用RTMP,下行通常会使用RTMP,HTTPFLV或者HLS。然而,RTMP,HTTPFLV使用的视频封装都是FLV,FLV是不支持H.265的,需要对FLV进行扩展。TS是支持H.265的,不需要扩展。
- 支持H.264到H.265,H.265到H.264,H.265到H.265的实时转码。
下面我们看看如何在FLV中支持H.265:FLV的封装结构为一个个tag,每个tag有tagheader表示该tag是视频,音频,还是script。对于视频tag,会有一个4bit的字段标识视频编码类型,如下图所示:
可以看到,这个4bit(0-15)的字段CodecID已经使用了6种类型,剩下的几种可以用于扩展。同时,我们看ffmpeg对FLV格式的定义,会发现,ffmpeg对FLV CodecID使用已经到了9,如下图所示:
为了避开ffmpeg对FLV的扩展引起的兼容问题,需要使用其他的 个CodecID来表示H.265。
在使用扩展了传输协议,并在云端实现了H265的转码后,直播流程如下图所:
使用时可以根据不同的推流端或播放端能 ,使用如下组合:
- 推流进行H.265编码,并使用扩展的RTMP协议,上传H.265直播流,云端转成不同码率的H.265和H.264,并输出HLS,标准RTMP,扩展RTMP,标准HTTPFLV,扩展HTTPFLV,供不同解码能能力和网络带宽的终端观看。
- 推流使用H.264编码,云端将H.264转码成不同码率的H.264和H.265码流,输出HLS,标准RTMP,扩展 RTMP,标准HTTPFLV,扩展HTTPFLV,供不同解码能力和网络带宽的终端观看。
以上就是H.265在直播场景中的应用流程图。
------------------------------------------------------------------------
诚然,新的标准诞生,伴随着鲜花掌声和追捧,也同样存在问题。H.265所依赖的算法的复杂程度决定了它需要多的计算能力来支撑,随之而来的就是对硬件消耗增多。
据了解,H.265解码的理论运算量为H.264的1.7~2.0倍,之前双核A9+单核GPU配置可以流畅播放H.264视频的话,而到了H.265视频就只能欣赏一下幻灯片了。这也就是现在各视频云厂商都还在摸索阶段的主要原因。
虽然如此,H.265能比H.264节约20%-40%的码率也是其不可小看的优势,所以在直播中应用H.265的目的也十分明确,就是降低视频码率,节省带宽成本。
云计算技术日益成熟,未来会有越来越多的厂商涌入到视频云市场之中。BAT等互联网巨头云集,大数据、H.265、4K、VR、AR等技术和标准的不断应用也对视频云服务提出了更高的要求。如何能够根据自身优势,顺应技术革新,帮助客户降低成本是值得思考的命题,相信每个厂商都有自己的答案。
本文转载自:阿里云云栖社区更多技术干货及好文,请关注
官方微博:@阿里云云栖社区 现在有免费赠手机的活动哦
官方微信:云栖社区(yunqiinsight)
官方知乎号:阿里云云栖社区