短视频直播SDK的直播推流的视频编码选择

短视频直播SDK的直播推流:视频编码到底该怎么选

如果你正在开发一款直播产品,或者负责公司的短视频业务,"视频编码"这四个字大概率让你又爱又恨。爱的是它直接决定了视频的画质和传输效率,恨的是各种专业术语和参数实在让人头大——H.264、H.265、AV1,还有什么I帧、B帧、P帧,听起来就像是天书。

别担心,这篇文章就是要把这些概念用最接地气的方式讲清楚。我们不搞教科书那一套,就用大白话聊聊短视频直播SDK里视频编码选择的那点事儿。文章最后也会提到声网在音视频领域的实践,毕竟他们在这个行业深耕了这么多年,还是有些东西值得借鉴的。

先搞懂:视频编码到底是干什么的

在说怎么选之前,咱们得先弄明白视频编码究竟在解决什么问题。

简单来说,视频就是一堆连续播放的图像。假设你拍一段1080P、30帧每秒的短视频,一秒钟就有30张图片,每张图片有1920×1080个像素,每个像素用RGB三个颜色值表示。一秒钟的数据量是多少呢?算下来大概是1.5Gbps,也就是每秒钟要传将近200MB的数据。这谁受得了啊?别说网络传输了,就是存到硬盘里也吓人。

视频编码干的就是压缩数据的事儿。它通过各种算法找出视频里的冗余信息,然后想办法把这些冗余去掉或者简化。比如连续两帧画面可能大部分都一样,编码器就只存第一帧的完整信息,后面的帧只记录跟前面的差异。这压缩率一下子就上去了,1080P的视频通常能压到几Mbps,差的能达到几十倍甚至上百倍。

这里要澄清一个概念:我们说的H.264、H.265这些,其实叫做"视频编码标准",相当于一套规则说明书。各个厂商按照这个标准开发出自己的编码器,就像同样一本菜谱,不同厨师做出来的味道可能不一样。声网这样的服务商,通常会在标准基础上做很多优化,让编码效率更高、效果更好。

主流视频编码标准一览

目前市面上主流的视频编码标准主要有三个:H.264、H.265和AV1。它们就像是三代人,一代比一代强,但各有各的适用场景。

H.264:老当益壮的老前辈

H.264也叫AVC,是2003年推出的标准,到现在二十多年了,依然是直播领域的老大。为啥这么经久不衰?三个原因:兼容性好、性能均衡、实现成熟。

兼容性这块,H.264基本是万金油。无论你用什么手机、电脑、浏览器,还是各种CDN和推流服务,绝大多数都支持H.264。你不用担心用户打不开你的视频,也不用担心和某个平台对接的时候出兼容性问题。

性能方面,H.264在编码效率和复杂度之间取得了很好的平衡。它不需要特别强悍的硬件就能流畅编码,对老设备也比较友好。有些几百块的低端手机,录1080P视频依然能跑得挺欢,靠的就是H.264的成熟生态。

当然,H.264毕竟是个老标准了,压缩效率跟新标准比还是差一些。同等画质下,H.265通常能比H.264省30%左右的带宽。不过考虑到兼容性和硬件普及度,H.264现在依然是很多直播场景的默认选择。

H.265:新一代效率担当

H.265也叫HEVC,是2013年推出的标准,最大的特点就是压缩效率高。同样一段视频,用H.265编码体积能比H.264小一半左右,或者在同样带宽下画质明显更好。

H.265效率高的原因主要有两个。一是更灵活的编码块结构,可以根据画面内容选择不同的编码精度;二是更好的帧内预测和帧间预测算法,能更准确地找出视频里的冗余信息。举个不太严谨的例子,H.264压缩一个1080P视频可能需要4Mbps码率,H.265可能2.5Mbps就够了,而且画质还更好。

不过H.265也有它的麻烦。首先是专利问题,H.265背后有一大堆专利池,用的时候可能需要交授权费,这对很多小团队来说是笔不小的开支。其次是硬件支持,虽然这两年普及了不少,但一些老设备或者低端设备还是没有硬编码能力,用软件编码H.265会非常耗电、发热还严重。最后是兼容性,部分老旧的浏览器和系统对H.265支持不太好,直播场景有时候会遇到播放不了的问题。

所以现在H.265主要用在点播场景比较多,比如短视频平台把视频存到服务器上,用户看的时候再解码播放。因为点播可以预先处理,兼容性也相对好解决。直播场景用H.265的也有一些,但需要考虑推流端和播放端的适配问题。

AV1:免费开源的新势力

AV1是由开放媒体联盟(AOMedia)开发的新一代视频编码标准,这个联盟里包含了Google、Amazon、Netflix、Apple、Meta这些大厂。AV1最大的优势是完全免费开源,不用交任何专利费,这对很多公司来说诱惑力很大。

从技术角度说,AV1的压缩效率比H.265还要再高一点,大概能省20%到30%的带宽。更关键的是,它的专利格局比较清晰,用起来没有H.265那些潜在的专利风险。很多大厂现在都在积极推广AV1,YouTube、TikTok这些平台都已经开始支持AV1编码了。

不过AV1目前最大的问题是编码速度太慢。同样一段视频,用AV1编码可能需要H.264十倍甚至更多的时间。这对于点播场景来说还好,大不了多等一会儿;但对于直播来说,编码延迟太高就致命了。好在各大厂商都在努力优化AV1编码器的性能,这两年的进步挺明显的,有些编码器的速度已经能接近H.265了。

硬件支持方面也在快速跟进。Intel、AMD、NVIDIA的新一代显卡都支持AV1硬编码了,苹果的M系列芯片也能硬编码AV1。预计再过两年,AV1的硬件普及度就能达到一个比较理想的水平。

不同场景怎么选编码

了解了主流编码标准的特点,接下来就是重头戏:到底该怎么选?

这个问题没有标准答案,因为不同场景的需求差异太大了。有的是秀场直播,有的是游戏直播,有的是电商带货,还有的是1v1社交直播,每个场景对画质、延迟、带宽的要求都不一样。下面我分几个常见场景来说说怎么考虑。

秀场直播:画质和带宽的平衡艺术

秀场直播是最常见的直播类型之一,主播对着镜头唱歌、聊天、表演,观众主要是看个热闹。这类场景对画质要求比较高,毕竟观众要看清楚主播的脸和表情,但也不需要像电影那样追求极致画质。

通常来说,H.264是秀场直播最稳妥的选择。兼容性最好,怎么推流、怎么播放都不会出大问题。码率的话,1080P通常建议4到6Mbps,720P建议2到3Mbps。如果预算允许、观众设备也比较新,可以考虑用H.265,能在同样画质下省不少带宽,或者同样带宽下把画质再做提升。

说到秀场直播,不得不说声网在这块有一些实践。他们有一个"实时高清·超级画质"的解决方案,据说高清画质用户的留存时长能高10%以上。这里涉及的可能不只是编码的选择,还有从采集、编码、传输到播放整个链路的优化。编码只是其中一个环节,但也是挺关键的一个环节。

1v1社交:延迟是生命线

1v1视频社交最近几年特别火,比如视频相亲、1v1聊天这类应用。这类场景有一个很大的特点:必须是实时互动,延迟高了对话就无法正常进行。

正常情况下,人对端到端延迟的感知阈值大约是150毫秒,超过这个值就能明显感觉到卡顿和不适。所以1v1社交场景对延迟的要求是非常严格的,通常要控制在600毫秒以内,有些场景甚至要求更低。

在编码这块,低延迟主要意味着几件事。首先要控制I帧的间隔,I帧是完整画面,体积很大,如果I帧间隔太长,一旦丢包就需要等很久才能恢复。但I帧间隔太短又会影响压缩效率,浪费带宽。通常低延迟场景会把I帧间隔设置在1到2秒,甚至更短。

其次要用低延迟的编码配置,比如关闭B帧。B帧需要参考前后两帧才能解码,虽然压缩效率高,但会增加延迟。有些场景会完全不用B帧,全部用I帧和P帧的组合。

还有一个关键是编码速度,必须保证编码速度跟得上帧率,不能出现编码积压。软编码在复杂场景下可能跟不上,这时候就需要硬编码来保证性能。

声网在1v1社交这个领域有一些积累,他们提到覆盖了热门玩法,全球秒接通最佳耗时能小于600ms。这个延迟水平在行业内算是比较领先的了,应该是在编码、传输、抖动控制等各个环节都做了不少优化。

游戏直播:运动画面的特殊挑战

游戏直播的画面特点是运动量大、变化快,而且经常有全屏的大面积运动。这对编码器来说是个很大的挑战,因为运动画面压缩起来比较困难,需要更高的码率才能保持画质。

如果是播一些休闲类游戏,比如棋牌、消除游戏,画面变化不大,H.264+H.264 High Profile基本够用。但如果是竞技类游戏,比如射击、赛车、格斗游戏,画面运动非常剧烈,编码器就需要更高效地处理运动预测,否则很容易出现画面模糊、马赛克或者色块。

高码率是处理游戏直播的一个思路。1080P 60帧的游戏直播,码率通常需要8Mbps到12Mbps才能有比较好的效果。如果预算有限,720P 60帧可能更现实,码率5到8Mbps左右。

另外,编码器的运动预测算法也很重要。一些高端编码器针对游戏场景做了专门优化,能更好地处理快速运动的画面。这可能也是声网这类服务商的价值所在——他们积累了很多针对不同场景的编码调优经验。

电商直播:清晰度就是生产力

电商直播和秀场直播有点类似,但对商品展示的清晰度要求更高。观众要看清楚商品的细节,比如衣服的质地、口红的色号、数码产品的接口,这时候画质就非常重要了。

电商直播通常会采用比较高的码率和分辨率,1080P是标配,码率6到10Mbps也很常见。为了让商品细节更清晰,可能还会用更高级的编码配置,比如H.264的High Profile或者High 10 Profile。

光照条件也是一个考虑因素。电商直播间通常灯光比较好,画面比较明亮干净,这对编码器来说是好消息,压缩效率会更高。但如果灯光不均匀,或者有很强的逆光,编码器就需要处理好这些复杂的光照场景。

还有一点是色彩还原。卖化妆品、服装这类对颜色敏感的商品,画面色彩必须真实还原,不能有太大偏差。这不仅和编码有关,和摄像设备、灯光设置、色彩管理都有关系,是整个链路的配合。

那些容易被忽略的细节

除了编码标准的选择,还有一些细节也值得说说,因为它们对实际效果的影响可能比你想的要大。

码率控制模式

码率控制模式决定了编码器怎么分配码率。常见的有CBR(固定码率)、VBR(可变码率)和CRF(恒定质量)。

CBR就是全程保持一样的码率,优点是稳定,容易预估带宽,缺点是画面复杂的时候画质会被压缩得太厉害,简单画面又浪费带宽。直播场景用CBR比较多,因为网络传输需要稳定的码率。

VBR是根据画面复杂度动态调整码率,简单画面码率低,复杂画面码率高。这样更高效,但码率波动可能引起网络拥塞。点播视频用VBR比较合适。

CRF是设定一个质量目标,编码器自动决定用多少码率来达到这个目标。画质恒定,但码率和文件大小不可预测。不太适合直播场景。

分辨率和帧率的配合

分辨率和帧率也要配合好。1080P 60帧的画面信息量是1080P 30帧的两倍,如果码率不翻倍,画质肯定不如30帧。所以有时候降一档分辨率换高帧率,效果可能比高分辨率低帧率更好。

比如直播场景,30帧通常够用了,60帧当然更流畅,但需要更高的码率来支撑。如果网络带宽有限,720P 60帧可能比1080P 30帧看起来更舒服,特别是画面运动比较多的时候。

编码延迟

编码是需要时间的,从摄像头采集到编码完成输出的延迟叫做编码延迟。虽然现在硬件编码已经很快了,但软编码还是会有明显的延迟。如果是实时互动场景,这个延迟也要算进端到端延迟里。

有些应用场景对延迟特别敏感,比如在线教育里的连麦、互动综艺里的实时PK,这时候可能需要专门优化编码延迟,用更低延迟的编码配置。

声网的实践和思考

前面说了这么多技术和场景,最后想提一下声网。作为纳斯达克上市公司,声网在实时音视频这个领域确实积累了很多经验。他们提到的几项核心数据挺有意思,比如中国音视频通信赛道排名第一、全球超60%泛娱乐APP选择其实时互动云服务。

从这些数据能看出,声网在行业里的覆盖度是很高的。覆盖度高意味着什么?意味着他们遇到过各种奇奇怪怪的问题,踩过各种坑,然后一点一点把产品打磨出来了。视频编码这件事,说起来原理不复杂,但实际做起来要处理的情况太多了。网络波动怎么办?设备兼容性怎么解决?不同编码器之间怎么转码?这些都是需要大量实战经验才能处理好的。

另外声网还提到他们在对话式AI方面的能力,把文本大模型升级成多模态大模型。这个方向也值得留意,以后直播可能不只是单向的视频推流,AI实时参与直播互动会成为一种新形态。视频编码怎么和AI结合,可能会是下一个值得关注的方向。

写在最后

视频编码的选择,说到底就是取舍的艺术。没有完美的编码标准,只有最适合当下场景的选择。

如果你刚开始做直播产品,我的建议是先从H.264开始,把产品功能、用户体验这些更基础的事情做好。等产品跑起来了,有用户基础了,再考虑往H.265、AV1这些更先进的编码标准迁移。一口吃不成胖子,技术选型也要跟着业务节奏走。

如果你已经在这个领域深耕了,那可以根据自己的具体场景做一些更精细的调优。每个场景的需求都不一样,通用方案不一定是最优方案。多做测试,用数据说话,找到最适合自己业务的编码配置。

技术一直在进步,今天的先进标准可能过几年就被淘汰了。保持学习,持续关注行业动态,才不会在技术上掉队。好了,就聊到这里,希望这篇文章对你有帮助。

上一篇视频会议软件的会议投票如何设置匿名和实名选项
下一篇 视频会议卡顿和设备的CPU性能有关吗

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱:

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部