8

我想在我的网页上的 Flash 播放器中播放 Google Text-To-Speech URL。

我正在使用http://www.alsacreations.fr/dewplayer.html但它不起作用:

<object type="application/x-shockwave-flash" data="dewplayer.swf" width="200" 
        height="20" id="dewplayer" name="dewplayer">
<param name="wmode" value="transparent" />
<param name="movie" value="dewplayer.swf" />
<param name="flashvars" value="mp3=http://translate.google.com/translate_tts?q=hello-word&tl=en" />
</object>
4

2 回答 2

4

MP3 文件的 URL 必须是 URL 编码的 (http://www.w3schools.com/tags/ref_urlencode.asp)

<object type="application/x-shockwave-flash" data="dewplayer.swf" width="200" height="20" id="dewplayer" name="dewplayer">
<param name="wmode" value="transparent" />
<param name="movie" value="dewplayer.swf" />
<param name="flashvars" value="mp3=http%3A%2F%2Ftranslate.google.com%2Ftranslate_tts%3Fq%3Dhello-world%26tl%3Den" />
</object>
于 2012-04-25T12:23:13.393 回答
4

我进行了深入研究并找到了一些解决方案。Mathieu 的结论(谷歌改变了论点,你必须编写自己的应用程序)是错误的。问题是谷歌检查跨域访问。令人惊讶的是,在这种情况下,它不受Adob​​e Flash 播放器 crossdomain.xml的监管。Flash 播放器不会尝试从服务器根目录加载该文件(在 Firebug 中测试)。

问题是google正在检查referer,如果设置了,它会拒绝加载内容,请检查:

所以问题归结为内联内容的引用欺骗。

解决方案 1 - RefererKiller

<img src="">您可以使用一个简单的技巧:在标记中引用 mp3 文件,请参阅我的示例,并添加引用者欺骗。然后 Flash 播放器将不必下载它,因为它已经在缓存中。有一些解决方案可以从内联内容中删除引用者(请参阅图像的引用者杀手实现)。但是,评论表明跨浏览器兼容性可能是一个问题。

解决方案 2 - https

因此,最简单的解决方案是使用https协议 - 清除缓存并尝试添加 https 的上述链接内联内容不会设置Referer。但是,如果您没有受信任的证书,您可能不希望您的用户通过可怕的 4 次单击过程来确认对您的证书的信任。在这种情况下,您可能想要寻求另一种解决方案。

于 2013-06-09T12:48:17.680 回答