前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云音视频与SRS开源生态

腾讯云音视频与SRS开源生态

作者头像
腾讯云音视频
发布2023-04-11 21:40:30
2K0
发布2023-04-11 21:40:30
举报
文章被收录于专栏:音视频咖

自由与开源软件的理念,从不解、争议、接受到如今如火如荼,经历了长期的历程。国内开源软件起步较晚,但进展迅速。腾讯经过几年的开源协同运动,也取得了不少成绩。其中,腾讯云音视频在FFmpeg、SRS等重要多媒体开源社区的贡献,颇具代表性。

SRS是开源实时视频服务器、全球流服务器中Star最多也最活跃的开源项目,主要应用在直播、WebRTC、安防和交通等领域,支持常用的流媒体协议和转换,以好用易用赢得了全球开发者的良好口碑。开箱即用的云SRS开源音视频方案赋能众多行业创造了新的可能。同时,SRS由工信部木兰开源社区孵化,是中国主导的开源项目。目前,腾讯云音视频团队是SRS主力维护团队之一,为SRS项目贡献了不少核心功能。

SRS流媒体服务器

SRS的作用是接收流、协议转换和分发流,支持多路流和云原生运维,以及完善的工具链。

SRS的核心能力包括:

  • 配置能力:支持NGINX格式的conf文件配置、Reload以及K8s ConfigMap的变更侦听。SRS 5.0支持了环境变量配置,更方便云原生环境部署。
  • OpenAPI开放接口:支持HTTP API和Callback回调,支持各种协议的统计包括WebRTC和HLS。SRS 5.0支持了Prometheus Exporter,云原生的可观测系统。
  • Cluster集群:直播支持Origin源站集群和Edge边缘集群。SRS 6.0正在开发Proxy集群,支持WebRTC和SRT等协议在K8s中更方便的部署。
  • 日志和错误:基于Context的日志,是SRS轻量线程技术的优势,可以快速找到某个连接的上下文日志。带堆栈的错误让问题排查更方便。SRS 5.0在崩溃时会将堆栈打印到日志。
  • 工具链:UTest大概560个,覆盖率60%左右,全流水线测试和发布,基于FFprobe的黑盒测试,SB(srs-bench)直播和RTC压测工具链。SRS 5.0支持了Asan,SRS 6.0正在开发tea使用eBPF做网络模拟和负载均衡。
  • 核心协议:支持RTMP、HLS、HTTP-FLV、HTTP-TS、HLS、WebRTC、SRT、MPEG-DASH、GB28181等协议以及互相转换。SRS 5.0支持了WHIP和WordPress/Unity WebRTC对接。
  • 编码:音频支持AAC和Opus,以及音频转码;视频支持H.264和AV1。SRS 5.0全面支持了HEVC以及8K直播。
  • 平台:支持Linux、macOS、Windows等常见OS,支持x86、armv7、aarch64、m1、RISCV、loongarch、MIPS等常见CPU,并且适配各种常见的国产信创系统。
  • 性能和延迟:单核支持3K直播和1K RTC流,可用集群架构发挥多核能力。SRS 5.0改进了底层,具备多线程能力(目前依然是单进程)。RTMP或FLV的延迟在3秒左右,HLS或DASH在5秒左右,SRT和GB在500ms左右,WebRTC延迟在150ms左右。

SRS不仅仅是具备流媒体能力的服务器,它是一个非常方便和容易使用的一个流服务器,活好不粘人,海内外好评如潮。

SRS与SRT

SRT 是由Havision联合Wowza制定的一个开源、免版权费的基于UDP的传输协议,目的是安全和可靠的解决tcp在长距离链路传输中延迟高、抗抖动性差的问题,并针对直播流媒体场景特别是OTT行业的需求做了优化。

在传输质量指标上,SRT 通过更精准和快速的重传控制,以及针对直播流媒体场景的 Pacing 机制,使得在相同丢包率下,应用层丢包较少。当丢包率在 50%时,SRT 相比 QUIC 仍能保证稳定的传输。

SRS 5.0针对SRT API做了协程化改造, 使SRT更好的适配SRS的协程IO框架, 可以支持HTTP回调,改进了错误机制,提高了稳定性。得益于整个社区的努力,SRT在SRS中的比重越来越高。

腾讯云针对SRT的一些特点和场景, 也做了针对性的优化, 并应用在腾讯云StreamLink和TMIO SDK等产品中。同时,特别针对跨区远程传输的延迟问题,腾讯云媒体传输做了以下优化:

  • 连接机制优化:支持了0RTT/1RTT,优化连接耗时
  • 重传机制优化:通过对参数优化和乱序度控制等策略,优化重传率。
  • 拥塞控制优化:在TMIO上支持BBR、GCC等拥塞控制算法,适应不同网络场景的需求。
  • 多链路传输,支持带宽聚合模式:原生SRT只有backup,broadcast两种多链路传输模式,我们针对直播场景增加了auto自适应模式,能够做到将多个网卡的带宽聚合后进行直播,并智能动态选择链路。

SRS与WebRTC

SRS 4.0支持了WebRTC协议、UDP单端口复用、客户端IP地址切换以及RTMP和WebRTC的转换,开始进入通信和低延迟直播领域,解决了Flash播放器下线后直播通过网页推流的问题。

Unity游戏框架也支持了WebRTC SDK。SRS推出了开源的srs-unity对接实例,支持和Unity的对接,可以实现游戏直播、游戏通话、VR音视频等场景,降低了Unity开发者使用音视频的门槛。同时腾讯云TRTC也支持WHIP协议接入,可以平滑迁移到云服务。

腾讯云在SRS 5.0完善了SRT协议栈,也优化了SRT转WebRTC的链路,除了RTMP转WebRTC之外,还提供了SRT转WebRTC的路径。另外,腾讯云也贡献了WebRTC over TCP协议的实现,在某些网络下无法使用UDP时,可以回退到TCP协议传输。

SRS定位为中小规模WebRTC集群,腾讯云TRTC主要提供大规模的RTC云服务能力,比如WebRTC百万人大房间、跨地域级联和传输、弱网抗性、节点故障迁移和热重启等。TRTC在SRS的集群方案讨论中,也贡献了宝贵的经验。

特别剧透:TRTC已经在和SRS深入探讨将TRTC在行业领先的的弱网抗性算法、针对多场景的适配以及弱网识别与快速适应等能力,从SRS 6.0开始逐步落地到SRS的传输算法中,反馈开源社区造福广大的开发者。

SRS低延迟直播

低延迟直播,一般通过RTMP转HTTP-FLV或者RTMP转WebRTC实现,可以将延迟降低到秒级别。HTTP-FLV在国内应用广泛,WebRTC延迟更低但适配性不如FLV。

腾讯云在SRS支持WebRTC和RTMP转换中是最初的贡献者,后续也贡献了组帧等逻辑,解决了WebRTC转RTMP中的不少问题。

此外,SRT在低延迟直播场景中应用广泛,比如低延迟导播可以做到300到500ms延迟,可以选择FFmpeg/OBS/vMix推SRT流到SRS服务器,然后使用ffplay/vMix拉流或用WebRTC网页观看。

同时腾讯云的云服务和开源对齐,在业务规模扩大时可以平滑迁移到腾讯云快直播,支持更大规模的低延迟直播服务。

SRS与H.265

SRS 6.0支持了H.265。H.265相比H.264可以节省50%带宽。H.265在8K或VR场景下优势明显,H.264无法支持8K高分辨率。

H.265开源全链路逐步完善,Chrome 105已经支持H.265播放,可以使用FFmpeg推SRT流到SRS服务器,将SRT转成HTTP-TS后,直接使用VLC/ffplay或Chrome/mpegts.js播放直播流。

SRS还支持了开源的WordPress SrsPlayer插件以及GB28181安防协议,还有FLV/MP4文件录制,都支持了H.265编解码。

腾讯云在H.265方向,对开源社区贡献也很多,比如FFmpeg H.265移动端硬件编解码加速、透明视频编解码,参与了SRS支持H.265的多个Pull Requests的Codec Review。腾讯云音视频的云服务也支持H.265,可以支持开发者从开源到云服务的无缝切换。

云SRS

针对非音视频的开发者,SRS推出了开源的云SRS,基于鼠标操作就可以搭建出开箱即用的视频云,支持私人直播间、无人直播、多平台推流、低延迟直播、录制等场景。

云SRS是一个开源音视频方案,除了SRS,还使用了FFmpeg、Nginx和Redis等开源产品,是一个开箱即用的单机视频云。

云SRS提供了宝塔插件安装方式,Docker镜像安装,另外,腾讯云Lighthouse提供了云SRS的镜像,一键安装云SRS,让用户使用的门槛更低,计费更简单,受到了开发者的一致好评。

云SRS支持录制,可以将直播流录制为本地文件,针对本地磁盘有限的情况,云SRS支持录制到腾讯云COS和腾讯云点播系统,不用担忧磁盘会写满。

腾讯云和云SRS社区密切配合,实现了多个应用场景,未来还会不断上架新的应用场景。

SRS可观测性

SRS 5.0支持了官方的Prometheus Exporter,云原生强大的可观测性让SRS变成了一个可运维的服务。这点在问题排查中已经发挥了重要的作用。

另外,SRS 5.0也支持了腾讯云APM对接,这点作为彩蛋大家可以自己摸索一下。

腾讯云音视频与SRS社区

SRS的10位TOC(核心维护者)中,腾讯云占据2席,在Codec Review、技术Roadmap等上发挥了很大的作用。腾讯云贡献了SRS 5.0的核心功能之一SRT协程化改造,让SRT具备完善的功能,包括回调和API,改进了底层的SRT IO机制和SRS的协程框架融合,提高了SRT的效率和稳定性,改进了易用性。腾讯云Lighthouse推出了云SRS镜像,一键安装和设置SRS,面向鼠标编程,让更多甚至没有音视频知识的朋友和行业,也可以用音视频赋能自己的业务,在媒体内容制作、自媒体多平台推流、无人直播等领域显著降低了门槛。

在SRS海外社区的建设中,腾讯云拓展了SRS WordPress插件,Unity WebRTC对接等场景,解决了SRT HEVC 8K直播问题,得到了海外社区开发者的众多好评。NextArch基金会组织了香港开源会议,SRS分享了社区建设的经验,扩大了社区的影响力。


如果您对SRS开源项目或我们的产品感兴趣,欢迎扫描下方二维码添加音视频小姐姐微信,与我们的技术团队深入沟通交流。

腾讯云音视频在音视频领域已有超过21年的技术积累,持续支持国内90%的音视频客户实现云上创新,独家具备RT-ONE™全球网络,在此基础上,构建了业界最完整的 PaaS 产品家族,并通过腾讯云视立方 RT-Cube™ 提供All in One 的终端SDK,助力客户一键获取众多腾讯云音视频能力。腾讯云音视频为全真互联时代,提供坚实的数字化助力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云音视频 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档