【问题标题】:How does the Twitch-application stream to Android?Twitch 应用程序如何流式传输到 Android?
【发布时间】:2014-03-25 19:53:20
【问题描述】:

我目前正在为一家公司开发一个电子竞技流媒体日历的项目。该应用程序运行良好,但问题是 twitch 只允许您流式传输 Flash,而对于 Android,在 Google 决定取消支持后,它并不能正常工作。 Http-live-streaming 也没有得到很好的支持,因此该小组目前处于死胡同。

因此,我的问题是:Twitch 应用程序如何流式传输到 Android?
它适用于不支持 flash 或 HLS 的 Android 设备,因此应该有另一种方法。

【问题讨论】:

    标签: android flash video-streaming twitch


    【解决方案1】:

    我的猜测是它可能已经在它的 flash 客户端中使用了 HLS 或 RTSP(RTMP+RTSP 是最常见的场景),Android 应用只是另一个流客户端实现。

    从 HLS 开始,它不需要任何原生支持即可在 Android 上运行,它只是简单的 HTTP,您甚至可以根据需要编写自己的实现。原生 MediaPlayer API Android 已经提供了实现。 RTMP + RTSP 也是一样。

    所以,对于你的问题,我可以考虑两种方法来解决它:

    1. 获取一个支持数据包嗅探的路由器(可能是一个安装了 OpenWRT 并安装了 tcpdump 的路由器),并对使用的 URL 和协议 twitch Android 客户端进行逆向工程,然后在您的应用中使用它。

      优点:不依赖于 twitch 应用程序本身

      缺点:更难实现,如果 twitch 更改其内部协议可能会中断

    2. 对用于传递给其视频播放器 Activity 的 Intent twitch 应用程序进行逆向工程,并模仿您自己的一个以允许用户打开播放器来观看视频流。

      您可能会发现有用的工具:https://play.google.com/store/apps/details?id=uk.co.ashtonbrsc.android.intentintercept

      优点:更可靠、更一致

      缺点:如果 Intent 是私有的,则可能无法工作,这取决于安装 twtich 应用程序的用户

    更新:

    1. 我刚刚发现 Twitch 网站也可以在 Android 原生浏览器上运行。似乎它使用了 HTML5 标准中的 <video> 标签。因此,最简单的解决方案可能只是使用WebView 环绕该流页面,但这不利于用户体验。

      或者,您可以编写一个服务器端代码,该代码接受流页面 URL 作为参数,视频标签作为输出,并使用正则表达式或 XPath 或一些 XML 解析器库将 <video> 标签提取到客户端。客户端应用程序可以设置一个 WebView,其中包含 <video> 标记。这种方法可以防止您的应用在 Twitch 更改其页面结构时停止运行。

      另外,如果您不想使用WebView,您可以提取该<video> 标签的src 属性,并根据需要使用Android 的本机MediaPlayer AP 播放。

    【讨论】:

    • 我会尽快测试!提前致谢!
    • @Josmomo 我测试了<video> 标签,似乎 twitch 对其进行了一些 javascript 调整,所以它只在 twitch.tv 网站上播放
    猜你喜欢
    • 2019-06-13
    • 2012-05-14
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    相关资源
    最近更新 更多