Maison >développement back-end >tutoriel php >App与Web内如何实现实时拉取其他直播平台的视频流并播放?

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

WBOY
WBOYoriginal
2016-10-11 14:03:544424parcourir

本人不是技术背景的,体验过很多内容聚合类的 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了
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn