沈悦时 - 超高密度游戏直播转码架构

邓映菡

2017/12/18 发布于 技术 分类

总部位于美国旧金山的Twitch.tv是全球除中国市场以外最大的互动直播平台,日活跃用户达到1500万。Twitch在高峰时段的并发直播频道超过4万5千路(换言之,每分钟处理近800小时的上载视频)。 Twitch的大多数主播上传的是1080p60、6mbps的高清视频。为提高直播节目的可达性,转码成多个较低码率是非常行之有效的手段。然而,搭建于开源软件FFmpeg的转码方案因为成本太高,只能满足Twitch极小部分直播频道的转码需求。 Twitch的工程师在评估了十几种软、硬、云转码方案以后,最后选择Intel QuickSync作为新一代视频转码平台,考虑采用Intel QuickSync的原因是其极度低廉的成本,优秀的稳定性,以及容易运维。与此同时,我们也对Twitch内部开发的转码软件TwitchTranscoder实现了多线程优化。 使用同样的x264配置,多线程的TwitchTranscoder相比FFmpeg提高了65%的运行效率。同时基于Intel QuickSync的硬件方案相比基于x264的TwitchTranscoder又能节省80%的总体拥有成本。在部署了这些软硬件优化之后,Twitch在2017年上半年增加了10倍的转码容量。

文字内容
1. 超高密度游戏直播转码架构 沈悦时 Twitch, Principal Research Engineer
3. 沈悦时 Twitch, Principal Research Engineer 沈悦时博士带领的研发团队负责Twitch的直播视频转码、ABR播放算法、多平台 播放兼容性、画面质量、时延等核心视频技术 沈博士同时是AOM(Alliance of Open media)新一代视频编码协议AV1高层句 法的主要贡献者。他发表、申请近20项技术专利,涵盖视音频压缩、推流、播放 等领域 沈博士毕业于上海交通大学(本科)、澳洲新南威尔士大学(硕士)、澳洲国立 大学(博士)。
4. •  Twitch.tv是干嘛的? •  Twitch直播平台架构,极低成本转码的商业需求 •  FFmpeg有点小毛病,还是得重起炉灶 •  Shopping也很难:各种转码方案的利弊 •  大团圆结局以及未来努力的方向
5. Twitch.tv是干嘛的? 总部位于旧金山,是亚马逊AWS的 子公司 全球(除中国市场外)最大的互动 直播平台 主播、观众主要集中在北美、欧洲, 但亚太、南美是新增长点 服务:直播、聊天室、直播录像、 上传视频、短视频、社区、游戏整 合 营收模式:广告、打赏、游戏商店
6. 有关Twitch.tv的统计数据 1500万+ 日活跃用户 220万+ 月活跃主播 200万+ 高峰并发观众 4万+ 高峰并发直播频道 106分钟 用户平均每天浏览时间 $6500万+ Twitch社群筹集的慈善捐款
7. 与Netflix受众的不耦合性 注:Netflix为美国以及 全球最大的付费内容网 络视频服务商,美国 75%的网络视频观众是 其注册用户
8. 电竞已成为深受年轻人喜爱的大众内容
10. Twitch直播平台架构
11. Twitch直播平台架构
12. 转码的商业需求 “Providing transcoding to our broadcasters would help them give their viewers better user experiences.”
13. Twitch的直播转码系统
14. FFmpeg做RTMP转HLS实时转码 1进N出并转码每个variant: ffmpeg -i \ -c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v libx264 -x264opts keyint=120:no-scenecut -s 1920x1080 -r 60 -b:v'>b:v'>b:v'>b:v'>b:v'>b:v'>b:v'>b:v -profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v main -preset veryfast c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a libfdk_aac -sws_flags bilinear -hls_list_size .m3u8 \ -c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v libx264 -x264opts keyint=120:no-scenecut -s 1280x720 -r 60 -b:v'>b:v'>b:v'>b:v'>b:v'>b:v'>b:v'>b:v -profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v main -preset veryfast c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a libfdk_aac -sws_flags bilinear -hls_list_size .m3u8 \ -c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v libx264 -x264opts keyint=60:no-scenecut -s 1280x720 -r 30 -b:v'>b:v'>b:v'>b:v'>b:v'>b:v'>b:v'>b:v -profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v main -preset veryfast -c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a libfdk_aac -sws_flags bilinear -hls_list_size .m3u8 \ -c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v libx264 -x264opts keyint=60:no-scenecut -s 852x480 -r 30 -b:v'>b:v'>b:v'>b:v'>b:v'>b:v'>b:v'>b:v -profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v'>profile:v main -preset veryfast -c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a libfdk_aac -sws_flags bilinear -hls_list_size .m3u8 若要转封装某个variant: -c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v'>c:v copy -c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a'>c:a copy -hls_list_size .m3u8 \
15. 有点问题之一:转码+转封装的IDR对齐
16. 有点问题之一:转码+转封装的IDR对齐
17. 有点问题之一:转码+转封装的IDR对齐
18. 有点问题之二:单线程结构影响软件性能
19. 有点问题之二:单线程结构影响软件性能
20. TwitchTranscoder的高性能:多路输出方显优势
21. TwitchTranscoder的高性能:多路输出方显优势
22. TwitchTranscoder的高性能:多路输出方显优势
23. Shopping一个低成本、高密度的转码方案 ౮๜̵౮๜̵౮๜Ѻ! ᑞਧ௔! ኮᨶ! 3年的总体拥有成本:1/5现有的软件解决方案 48小时不间断运行,能对付各路畸形码流 对比基准:x264 veryfast Twitch的测试内容:https://media.xiph.org/video/derf/ H.264编码的API:IDR插入,码率控制 平均故障间隔,零件物流,NetBoot,IPMI 现成的服务器产品,软件开发支持 ᫫կᵞ౮! ᬩᖌ! Time to market!
24. Shopping还真有点难 ԯ! ᫫կ! ASIC! GPU! սᅩ! ᅎၚ! ᮱ᗟ‫׎‬ഠ҅ṛኮᨶ! ṛੂଶ҅֗‫ۑ‬ᘙҁ֗OPEX҂! ṛੂଶ҅ሿ౮ጱ๐‫࢏ۓ‬Ծߝ! ᗌᅩ! ౮๜ॡṛ҅ᇙ‫ڦ‬ฎegressၞᰁ౮๜૤य़! ֗ੂଶ! ෫ሿ౮ጱ๐‫࢏ۓ‬Ծߝ! ኮᨶӧड़ቘమ!
25. Nvidia Nvenc H.264 codec 100%用ASIC实现 测试了Maxwell代的Quadro M5000, Tesla M60 行业最高的编码器密度 高画质(SDK 2016.3以后版本) 解码器资源不够,拖累转码器密度 新Pascal代的Tesla P4或有突破
26. Intel Quicksync H.264 codec GPGPU和ASIC混合实现 Broadwell代在密度方面有显著提高 市面上有多个基于Xeon E3服务器产品 软硬件成熟,运行稳定,极佳的技术支持 SDK支持对一进N出ABR转码的性能优化 画质不能算非常理想
27. Intel Quicksync:小心SKU
28. Intel Quicksync Skylake:末代皇帝? •  Skylake和Broadwell比,SDK的软件优化 + 更大的GPGPU,能带来 10-20%的性能提高 •  未来新版SDK对于ABR转码的性能或有大幅提升 •  Kaby Lake的转码性能缩水50%,因为VDBOX用了老一代GT2 •  Kaby Lake的新功能仅限于增加了HEVC 10bit 硬件解码的功能 •  Kaby Lake并无VP9硬件编码的功能
29. 讨论:后H.264时代(好像有点混乱) •  编码器的优化努力基本集中在基于内容的VBR,比如Beamr、Harmonic、Ateme等 等 •  实时H.264编码效率超过x264 medium很难:x264 slow/slower提高不明显, veryslow提高明显但无法实时编码 •  VP9:解码已被广泛支持(除iOS),编码效率确有提高,但实时编码依然有难度 (libvpx speed 4就已难做到1080p60) •  HEVC:专利池依然混乱,依然没有浏览器支持,但被机顶盒、SmartTV广泛支持, 编码效率出色,并有众多软硬件实时编码产品 •  数(2020年的)风流人物,还看AV1(但估计实时编码有难度)
30. 大团圆结局,但依然有进步的空间 •  Twitch是全球(除中国市场以外)最大的互动直播平台,峰值并发直播频道超过4万 路 •  软件优化+硬件转码方案的部署使Twitch的转码容量在2017年提高了10倍,同时正式 支持1080p60 6mbps高清,超过50%的Twitch用户观看1080p高清码流 •  有必要跟进Skylake在密度方面的提升,以降低转码器成本 •  有必要评估基于Skylake Quicksync的第三方编码器(用GPGPU做ME等),以提升 画质 •  对于超高观众的频道,可考虑广播VP9、HEVC以降低流量成本