我有一个通过“swfobject.embedSWF()”加载的 SWF

我使用 Javascript 的方法通过 flash API 传递调用: http://developer.longtailvideo.com/trac/wiki/Player4Api#Sendingevents

call.player.sendEvent('LOAD', theFile)

通过 GET 对 PHP 脚本使用 XMLHttpRequest() 调用,我得到一个文件 url:

http://xx.yy.com/protected/5dde98716ad8f31127ab560d94f96b87/4cbabea0/test.mp4

在浏览器中输入 URL 会启动该文件,但将变量传递给 sendEvent() 调用不会执行任何操作。为什么?

var response = http.responseText;    
loadFile(response);
player.sendEvent('PLAY');

有什么明显的事情表明我做错了吗?:/

谢谢。

编辑1:解决方案

我已经获得了生成的 url 来正确加载和播放,而不仅仅是返回视频 url XMLHttpRequest() 但返回一个实际的 xml 文件,其中包含与我正在使用的某些模块一起使用所需的参数。

<rss version="2.0" 
    xmlns:media="http://search.yahoo.com/mrss/" 
    xmlns:jwplayer="http://developer.longtailvideo.com/trac/wiki/FlashFormats">
    <channel>
        <title>Example media RSS playlist</title>
        <item>
            <title>Lighttpd Video</title>
            <media:content url="http://xx.yy.com/protected/91aa7dfa25596a7d59c3b9403fc4773f/4cbb35d6/test.mp4" />
            <jwplayer:provider>http</jwplayer:provider>
            <jwplayer:http.startparam>start</jwplayer:http.startparam>
        </item>
    </channel>
</rss>

我想知道这是否像现在看起来那么明显。能 XMLHTTPRequest() 只返回 xml 文件格式的响应?:/

有帮助吗?

解决方案

该文件未加载,可能是因为闪光灯中的跨域限制。

我假设从加载Flash SWF的域并不相同,该域从加载音频文件的位置。

要覆盖此限制,您需要一个crossdomain.xml文件放置在托管声音文件的服务器的根目录上。

<?xml version="1.0"?>
<!-- http://www.youtube.com/crossdomain.xml -->
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

该文件应放置在您的Web服务器的根目录中,即 http://xx.yy.com/crossdomain.xml

其他提示

在 AS3 中,您必须使用 Sound 类才能播放声音。您的声音实例需要通过 URLRequest 对象加载 URL 才能播放声音。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top