流媒体音频不适用于Android
我有一个简单的网页使用HTML 5音频标签进行流式传输。我已经设置了一个IIS7重写规则,以便浏览器不能直接下载MP3文件,但它仍然可以通过音频控制进行流式传输。这适用于我的桌面(Chrome 37.0.2062.124 m),但不适用于我的Android设备(Samsung Galaxy S5)。我无法在Android上下载该文件,但我无法将其传输。当我禁用重写规则时,流媒体在两个设备上都能正常工作,但当然也可以直接下载文件。流媒体音频不适用于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>
任何想法?
谢谢!
编辑: 我已经设置了我的手机来使用我的电脑作为代理,所以我可以使用Fiddler2来监控流量。一些奇怪的事情正在发生。
从我的电脑(工作),浏览器启动一个GET文件的MP3文件,并正确接收HTTP 206响应。从我的手机(它不工作),它首先发出一个GET文件到mp3文件,接收到一个206响应,然后立即启动另一个没有HTTP_REFERER的MP3文件GET,这当然会导致它失败,因为URL重写。我不确定我还能做什么,这是我手机上的Chrome浏览器的问题吗?
您的服务器是否执行任何重定向?如果是这样,你是否在Android客户端中遵循这些重定向?如果不是,那可能是你的问题。
我可能已经想通了。尝试在您的条件中添加以下内容:
<add input="{HTTP_USER_AGENT}" pattern="iPhone" negate="true" />
。
将iPhone用户代理更改为适合您的Galaxy S5的任何代理。这对我很有用,虽然我没有做重定向,而是自定义响应,比如“找不到文件”。我也没有像你那样使用一个空的referrer模式。
我发现这个在the Apple Support site
没有,没有重定向。它只是一个HTML页面,直接链接到位于同一个服务器,同一目录中的mp3文件。 – 2014-10-08 00:23:34