PHP返回通过Javascript加载的Flash播放器的视频URL

时间:2010-10-17 09:33:47

标签: php javascript flash jwplayer

我通过“swfobject.embedSWF()”

加载了SWF

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

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

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

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

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

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

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

感谢。

EDIT1:解决方案

我已经生成了正确加载和播放的网址,不仅仅是返回带有XMLHttpRequest()的视频网址,而是返回一个带有必要参数的实际xml文件,以便与我正在使用的某些模块一起使用。 / p>

<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文件的响应吗? :/

2 个答案:

答案 0 :(得分:1)

文件未加载可能是因为Flash中存在跨域限制。

我假设加载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

答案 1 :(得分:0)

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