2010-10-17 79 views
0

加载我有通过 “swfobject.embedSWF()”PHP返回视频网址,通过Javascript

我使用JavaScript的方法通过闪存API通过调用加载的SWF:http://developer.longtailvideo.com/trac/wiki/Player4Api#Sendingevents

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

用通过GET一个XMLHttpRequest()调用PHP脚本,我收到了文件网址:

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

中键入URL到我的浏览器启动文件,但传递变量到的SendEvent( )呼叫什么都不做。为什么?

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

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

谢谢。

EDIT1:解决方案

我已经得到了生成的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文件的回复吗? :/

回答

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

+0

我正在使用lighttpd,我已经完成了这项工作。尽管如此,我会用你给定的.xml来尝试,看看它是否比我已经有的更好。 – Morrowind789 2010-10-17 17:16:31

+0

您可能还想安装Flash播放器的调试版本并安装Flashbug进行调试。这可能会发现长尾鲨玩家抛出的任何异常情况。 – Nands 2010-10-17 17:31:19

+0

这个答案是最好的,但解决方案是通过阅读长尾论坛闪闪发光。请参阅我上面对我使用的解决方案的编辑。 – Morrowind789 2012-08-10 21:16:56

0

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

+0

它更是一个视频文件,我想比一个声音加载的,但我会考虑使用的URLRequest ()来获取网址。 – Morrowind789 2010-10-17 17:15:19