【问题标题】:Streaming Audio Not Working on Android流式音频无法在 Android 上运行
【发布时间】:2014-11-15 15:57:31
【问题描述】:

我有一个使用 HTML 5 音频标签进行流式传输的简单网页。我已经设置了一个 IIS7 重写规则,这样浏览器就不能直接下载 MP3 文件,但它仍然可以通过音频控制流式传输。这在我的桌面(Chrome 37.0.2062.124 m)上运行良好,但在我的 Android 设备(三星 Galaxy S5)上运行良好。我无法在 Android 上下载该文件,但我也无法流式传输它。当我禁用重写规则时,流式传输在两台设备上都可以正常工作,但当然也可以直接下载文件。

这是我的页面:

    <div>
        <h3>
            Audio
        </h3>

        <audio controls="controls" preload="auto">
            <source src="audio.mp3" type="audio/mpeg">
        </audio>
    </div>

这是我的 web.config:

    <rewrite>
        <rules>
            <rule name="Prevent MP3 Hotlinking" enabled="true">
                <match url=".*\.(mp3)$" />
                <conditions>
                    <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
                    <add input="{HTTP_REFERER}" pattern="http://www.example.com/.*" negate="true" />
                </conditions>
                <action type="Rewrite" url="http://www.example.com" />
            </rule>
        </rules>
    </rewrite>

有什么想法吗?

谢谢!

编辑: 我已经将我的手机设置为使用我的 PC 作为代理,这样我就可以使用 Fiddler2 来监控流量。发生了一些奇怪的事情。

浏览器从我的电脑(可以正常工作)启动 MP3 文件的 GET 并正确接收 HTTP 206 响应。从我的手机(不起作用),它首先向 mp3 文件发出 GET,收到 206 响应,然后立即启动另一个没有 HTTP_REFERER 的 mp3 文件的 GET,这当然会导致它失败,因为网址重写。我不知道我还能做什么,这仅仅是我手机上的 Chrome 浏览器的问题吗?

【问题讨论】:

    标签: android iis-7 html5-audio


    【解决方案1】:

    您的服务器是否进行任何重定向?如果是这样,您是否在 Android 客户端中跟踪这些重定向?如果没有,那可能是你的问题。

    【讨论】:

    • 不,没有重定向。它只是一个 HTML 页面,直接链接到位于同一服务器、同一目录中的 mp3 文件。
    【解决方案2】:

    我可能已经想通了。尝试将以下内容添加到您的条件中:

    &lt;add input="{HTTP_USER_AGENT}" pattern="iPhone" negate="true" /&gt;

    将 iPhone 用户代理更改为适合您的 Galaxy S5 的任何内容。这对我有用,虽然我没有做重定向,而是自定义响应,例如“找不到文件”。我也没有像你一样使用空的引用模式。

    我在the Apple Support site找到了这个

    【讨论】:

      猜你喜欢
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2016-01-15
      相关资源
      最近更新 更多