2010-10-17 104 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