PHP 返回视频 URL 供 Flash 播放器通过 Javascript 加载
-
08-10-2019 - |
题
我有一个通过“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 才能播放声音。
不隶属于 StackOverflow