欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

App与Web内如何实现实时拉取其他直播平台的视频流并播放?

程序员文章站 2022-04-01 21:37:42
...
本人不是技术背景的,体验过很多内容聚合类的 app,如“即刻”、“豌豆荚一览”等,但是这些内容的形式都属于非实时的。

请问,技术上可否实现自动且实时的拉取其它人家的直播 app 里的内容,并在自己的产品框架下去播放(不交互)?不通过谈判合作,自己通过技术是否可以实现?

另外,想知道,这个问题的答案对于手机 app 或者 web 是否有区别。

谢谢,希望我的描述能让勉强各位听明白。

回复内容:

这实际上就是一种盗播。这种做法的核心特点是:

自己不花流量费,用户观看视频时直接请求目标平台的服务器——这也是为什么叫“盗播”而不是“转播”的原因,你是用别人的钱给自己发家致富,而“转播”则是自己掏流量费,只是内容来自外部(当然转播也应当合法才行)。所以很容易理解如果第三方平台发现你这么做他们会有多愤怒。

道德方面不评价,单从技术上来说是可行的,但也存在一些限制。

可行的原因是:
  • 目前大部分直播平台的技术底层使用的都是 RTMP(Real-Time Messaging Protocol) 协议来实现直播流的发送(主播方)与接收(观众方)
  • 为了在移动端 Web 环境下实现直播观看,这些直播平台还会额外使用 HLS(HTTP Live Streaming)协议
  • 上述两种协议,都是开放的。RTMP 协议源自 Adobe 公司,技术规范参见:Real-Time Messaging Protocol (RTMP) specification 。而 HLS 协议则源自 Apple 公司,技术规范参见:developer.apple.com/str

更进一步来说一个直播系统核心的构成要件主要是三部分:
  1. 采集——主播使用 OBS 之类的软件来录制视频,并能够将数据发向服务器
  2. 转播——服务器使用 SRS/Red5 之类的软件实现接收采集端发来的数据并转发给回放端(观众)
  3. 回放——实质上就是指播放器,通常嵌入在 Web 页面或 App 里,观众通过它们来观看

对于盗播方,只需要实现回放功能即可。而回放怎么实现呢?其实你很容易就可以找到一个开源的播放器,支持 RTMP 和 HLS 协议。那么剩下的最后一步,就是抓取到那些直播平台的节目的播放地址了。注意这不是指直播节目的网页地址,而是指节目底层协议规定的地址,比如 RTMP 协议规定每个节目都有一个 rtmp:// 开头的地址,而 HLS 则是每个节目都有一个 http:// 开头的地址(HLS 实际上是基于 HTTP 协议的,因此其节目地址就是一个普通的网址)

是的,只要你能抓取到那些直播节目的视频流地址,再找一个播放器,就能直接播放了。这种方案基本能够盗播国内绝大多数平台的视频资源。

但也有少数平台做了防范,基本上有几类防范手法:
  1. 不使用 RTMP 和 HLS 而是基于自研的未公开协议,这大大提高了盗播难度(虽然这些平台原本并不是要防盗播,而是为了实现 P2P、低延迟等)
  2. 通过技术手段阻挠你获得直播视频的流地址(有一定效果,但也存在很多疏漏)
  3. 通过分析请求方是从哪个平台发起请求的,判断是否盗播(类似 HTTP 协议的 referer 防盗链机制,可以阻断低水平盗播)
  4. 通过检查登陆令牌的方式阻止盗播(对于许多登录才能看的移动端直播 APP 来说这可以说是防盗播的杀手锏,但是对于斗鱼熊猫之类不需要登录就能看的平台来说,这种效果不佳)

技术方面大致的情况就是这样。 抖个机灵……

嵌入一个 指定直播的IFRAME页面 即可

安全可靠无公害…… 理论可以 实际很难
你见过qq第三方客户端有吗 或者有了活得久的没 市场上已经有此类app了
相关标签: app web