AV1是很快会换掉H.264的下一代编解码,未来的WebRTC编解码会从H.264 Opus,升级成为AV1 Opus,M90已经支持了AV1,SRS 4.0.91支持了AV1。
使用方法
首先,升级Chrome到M90,默认就会开启AV1的编解码支持了:
然后,确认SRS的版本是4.0.91 ,并启动SRS(参考Wiki,无特殊配置):
# homeMacOS:srs winlin $ ./objs/srs -v4.0.91
最后,打开页面推流,在URL中指定参数 ?codec=av1 ,推流拉流都要指定:
- webrtc://localhost/live/livestream?codec=av1
如下图所示:
可以关注视频号,看视频演示:
更多信息请阅读原文。
分析分析
要达到原创还不够字数,下面我个人分析分析来凑点字数,我随便说你就随便一听就好了,哈哈哈。
首先,AV1解决什么问题?
- 更高的压缩率,花钱少了因为需要的码率更低,比H.264还要高一个代,能用眼睛看得出来才叫一代。
- 屏幕编码和SVC,据说屏幕编码很牛,还支持SVC,额这块是SRS还需要补齐的关键能力。
- 更开放和更安全,开源且无专利问题,还考虑了E2EE端到端加密,未来SRS会有DEMO放出来了。
其次,为什么AV1很重要?
- 专利问题:不能知法犯法。虽然国内现在好像不太关注,但是音视频未来会是基础设施,是要和国际接轨的,怎么能一直不管专利问题呢?反正SRS对于LICENSE是很敏感的,H.265一直没有下决心支持就是因为专利问题会影响使用。
- 更快的迭代:做业务,手慢无。听李忠哥说,AV1是代码和标准几乎同时出,而H.26X系列周期很长要先出标准然后出参考代码最后才是可用的代码,WebRTC更新这么的快,SRS也会更新越来越快,需要一个更快更新的编解码。
- 降低成本:规模要大,成本就要低。随着编码效率的提高,达到同样的画质只需要更低的码率,这样对于质量也更好(不容易卡),服务器也可以转发更多路数的流,无专利费用,整个套件都利于降低成本,为大规模使用创造条件。
最后,状态和未来?
- SRS 4.0.91目前支持了AV1,可以WebRTC推流用AV1,拉流用AV1。其实一对一通话和多人会议,本质上都是推流拉流,所以等SRS的会议DEMO放出来,就可以用AV1通话了。
- SRS还没有支持转码,所以AV1推流,还不能用H.264播放如果终端没有支持AV1就无法拉流了。
- 编码兼容问题(上面的不支持AV1的客户端的问题),除了服务器转码,还可以用Simulcast(还是SVC来着),也就是推H.264 AV1的流,SRS可以给不支持AV1的客户端转发H.264的流。
- 如果需要转直播(或录制),目前RTMP还没有支持AV1,估计RTMP标准也不会更新了,SRS虽然定义了CodecID=13,但是FFmpeg和VLC都不会支持,也只能扑街了。AV1在直播中的应用,还是个未知数,据说HTTP-TS也不支持AV1,尼玛。
预告
五一长假要来了,预告一些假期福利:
- 五月份的开源圆桌会按期举行,想要了解什么请留言。
- RTC转RTMP已经提交了PR,参考Github PR 2303。
- 五一长假,会开始写RTC的Demo和Wiki。