没有Flash如何做直播?

简介: 有些人呐,真是不见棺材不落泪,N(>=3)年前Adobe官宣了2020年底就不支持Flash了,最近发现非常多的朋友,到了真正完全不能用时,才考虑如何逃生,在群里一顿狂问“没有Flash了怎么播放RTMP”,“该选HTTP-FLV还是WebRTC”,“用什么播放器播HTTP-FLV”。本文只发一次,完整解决方案再啰嗦一遍,恕我不在群里回答这种问题了,自己花时间好好看吧,身为搞直播的研发工程师,总不能火烧了眉毛才开始想办法吧,各位耗子尾汁吧。

作者:忘篱
来源:SRS开源服务器

没有 Flash 了怎么做直播?

答案是:PC 用 H5。

为什么不说客户端?因为客户端上早就没有 Flash,不会问这个问题。客户端上浏览器,比如微信的浏览器,如果要播放直播可以用 HLS。如果是微信小程序,可以用 RTMP 的。如果是自己的 Native 客户端,那可以用各种云厂商的 SDK,或者开源的基于 FFmpeg 的方案,比如 Fijkplayer。反正,一句话说来,客户端因为早就习惯没有 Flash 了,这个问题不存在。

PC 怎么用 H5 呢?本质上有两个技术:

MSE:目前很成熟的技术,是 js 的解码器,把 MP4 格式的文件,送到 MSE 解码播放。其实很多播放器底层都是用的 MSE,比如 flv.js 播放 HTTP-FLV 或者 WebSocket-FLV,比如 hls.js 播放 HLS,比如 dash.js 播放 DASH 切片。

WebRTC:目前做直播还不太成熟,是做 RTC 通信还算比较成熟的一套技术,有自己的编解码逻辑。做直播不太成熟,是因为它本身不是干这个的,有些逻辑不太一样比如录制,另外通信比直播复杂太多了,所以如果只是做直播的话,肯定是不推荐上这么高难度骚操作的。

这两个技术又涉及到了几个问题,我们下面继续讲。

用 HTTP-FLV 还是 HLS?

答案是:

  • 看你的业务的延迟要求,2-5 秒用 HTTP-FLV,5-10 秒用 HLS。如果是替代 RTMP,一般来说要用 HTTP-FLV,因为 RTMP 延迟也是 3 秒左右。

  • 看业务对平台的要求,跨平台要求很强就用 HLS,比如要在 PC 和移动端浏览器中都能播放那就要选 HLS 了。

所谓延迟,就是推流和播放器的延迟,可以用 OBS 抓一个网页的秒表,然后播放器上观看,对比这两个时钟的差异,就是延迟了。

HLS 是否就不能做 3 秒延迟呢?比较难,但是 HLS 延迟可以做一些优化,估计能到 5 秒左右,详细可以参考百毫秒超低延迟直播方案中 HLS 延迟优化的配置。

如果选择了 HTTP-FLV,那么在移动端就不能用浏览器播放,但是移动端可以用 Fijkplayer 播放,这是为了追求更低延迟要付出的兼容性代价。当然,并非所有业务,都要求移动端浏览器观看,所以这个要根据自己的业务来。

是否保守点直接选 HLS?如果对延迟有一定的要求,那么就不合适,所以还不能这么武断的全部选择 HLS。

用 HTTP-FLV 还是 WebRTC?

答案是:HTTP-FLV。

WebRTC 是做通信的,不是用来做直播。在直播业务中,目前并没有经过大规模的验证,配套的东西也不如直播这么完善,比如微信小程序就没法用 WebRTC 了。

现在云服务也开始推出 WebRTC 直播服务,当然是可以用的,问题是云服务也支持 HTTP-FLV,为什么不选择更通用的方案?除非延迟要求非常低,比如 1 秒之内的延迟。

自己问下自己的业务,是否要做到 1 秒之内的延迟。那么就需要牺牲更多的兼容性代价,如果这个代价是可以接受的,那么 WebRTC 做直播也不是不能选的。可能有那么一天,WebRTC 直播也成为普通的选择,那就是另外一回事了。

动态黑色音符

有没有更好的协议?

答案是:RTMP、HTTP-FLV 和 HLS 一起用。

最好的替代场景是这样的:

  • PC 浏览器,延迟有要求的用 HTTP-FLV,延迟没要求的用 HLS。

  • 移动端浏览器,用 HLS,兼容性比较好,几乎都支持。

  • 移动端微信小程序,用 RTMP,HTTP-FLV 或 HLS。

  • 移动端 Native,用 RTMP 或 HTTP-FLV。

目前直播的云服务,这三个协议都是支持的,如果不能支持,自己用 SRS 搭建直播源站,转协议后分发,就可以支持了。

而且 SRS 还能将 RTMP 转成 WebRTC,是居家必备的不二之选。

用什么播放器?

这个问题就比较简单了,根据协议可以选择播放器:

  • HTTP-FLV,PC 上用 flv.js,移动端用 Fijkplayer。

  • HLS,PC 上用 hls.js,Safari、iOS、Android 可以 H5 直接播。

  • WebRTC,PC 上用 H5(得自己写代码调 API),移动端得用 SDK。

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

阿里云社区.png

相关文章
|
9月前
|
UED
游戏直播APP开发,源码方案适合哪些公司
游戏直播APP开发正随着直播互联网的迅猛发展而成为受众广泛的热门平台。然而,一些企业面临着技术实力、资源和资金等方面的限制,因此自主开发游戏直播APP可能变得困难。
直播平台源码功能分享:直播回放功能的实现
这个直播平台源码功能可以将主播的直播内容录制下来保存在直播平台云端中,用户进入到主播首页就可以看到这个直播平台源码功能,点击后就可以播放主播以往储存的直播内容。
直播平台源码功能分享:直播回放功能的实现
|
缓存 UED
聊一聊播放器在一对一直播系统源码中的作用
建立视频数据缓冲区,当网络不足以支持一对一直播系统源码用户流畅的观看直播时,系统会暂停播放,缓存一定的数据,支撑用户流畅观看。
|
缓存 前端开发 API
优酷播放体验优化实战(七)--优酷高性能弹幕渲染技术大揭秘
优酷高性能弹幕渲染引擎的目标,是在全平台实现对弹幕内容的高效渲染。渲染的内容包括文本、emoji、普通图片、apng动图和3D mesh等元素,并且支持节奏弹幕、燃弹幕、弹幕穿人、流光弹幕等各种特效玩法。下面,将对优酷高性能弹幕渲染引擎所涉及的技术做一次大揭秘。
1216 0
优酷播放体验优化实战(七)--优酷高性能弹幕渲染技术大揭秘
|
传感器 缓存 运维
优酷播放体验优化实战(四)--“三高”音频渲染引擎设计
随着高清在用户观影过程中的深度普及,人们已经不仅仅满足于视的享受,更需要听的保证。如何稳定保障音质,甚至增加更多的音效玩法需要一套强大的系统将数据传输、音频实时处理技术、音频输出有效地整合起来;而作为一个可以商业化应用的系统,其应具有高性能、高复用、高可靠的特点,在本文我们将探讨如何打造一套具备这些特性的音频渲染引擎。
240 0
优酷播放体验优化实战(四)--“三高”音频渲染引擎设计
|
编解码 缓存 边缘计算
优酷播放体验优化实战(三)--低延时直播
5G到来后用户的网络速度逐渐提高,同时用户对直播延迟等播放体验的要求也越来越高,在此背景下,优酷技术团队结合业内主流的直播技术架构提出了两种基于HLS(HTTP Live Streaming)的低延迟直播方案(Low Latency HLS),并且正式应用到了优酷直播业务。
372 0
优酷播放体验优化实战(三)--低延时直播
|
新零售 缓存 编解码
从 350ms 到 80ms,打造新零售场景下 iOS 短视频的极致丝滑体验
内容作为 App 产品新的促活点,受到了越来越多的重视与投入,短视频则是增加用户粘性、增加用户停留时长的一把利器。短视频的内容与体验直接关系到用户是否愿意长时停留,盒马也提出全链路内容视频化的规划,以实现商品力表达的提升。目前已有短视频场景包括:首页、搜索、商品详情、达人秀、沉浸式视频、真香视频、盒区首页 feeds 流、话题、UGC 内容、话题合集落地页、社群、菜谱、盒拍一键剪、直播回放、weex 等。
从 350ms 到 80ms,打造新零售场景下 iOS 短视频的极致丝滑体验
|
监控 黑灰产治理
直播平台开发干货分享——标准直播及快、慢直播的特性
 所谓自己做直播平台开发,要结合不同的应用场景,相对应的功能、硬件、软件配套技术也不同。根据应用场景的不同,自建直播平台可以分为标准直播、快直播和慢直播。本文将简单地为大家分析一下这三点的特性。
直播平台开发干货分享——标准直播及快、慢直播的特性
|
缓存 开发工具 数据安全/隐私保护
直播平台源代码的基础功能和首屏优化,小白必看点
对于任何一个程序软件来说,程序代码都是至关重要的,所以在搭建直播平台的时候,直播平台源代码显得尤为重要。
直播平台源代码的基础功能和首屏优化,小白必看点
|
编解码 Android开发 iOS开发