我到处搜索但找不到答案。我正在使用flowplayer和amazon s3与PHP。如果我复制并粘贴,该链接在浏览器中工作,但看起来flowplayer不喜欢查询字符串。我尝试替换html实体然后url编码它。我只是尝试了url编码。我只是尝试删除&并替换为&这些都不起作用。
我的目标是使用流媒体播放来自亚马逊s3的网址签名视频。
我知道我没有代码可以展示,因为它们都没有“正确”,但有人有任何建议吗?他们将非常感激。
答案 0 :(得分:1)
我遇到了同样的问题,并通过阅读Flowplayer cloudfrontsignedurl插件的ActionScript源代码找到了答案:
http://flash.flowplayer.org/documentation/developer/development-environment.html
private function _getUrl(clip:Clip):String {
var url:String = clip.getPreviousResolvedUrl(this);
var isRTMPStream:Boolean = url.toLowerCase().indexOf('mp4:') == 0;
if ( isRTMPStream )
//gets the url, minus the "mp4:" at the beginning
url = url.substr(4);
//gets the expires time in seconds
var expires:Number = Math.round((new Date()).getTime() / 1000 + _config.timeToLive);
//generate the signed url
var signedUrl:String = _signedUrlGenerator.signUrl(url, expires);
//put the 'mp4:' back on the front
if ( isRTMPStream )
signedUrl = 'mp4:'+ signedUrl;
return signedUrl;
}
注意它在签署url之前如何删除“mp4:”前缀,然后将其重新添加。
我按照亚马逊的例子,在这里:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CreateURL_PHP.html
然后我的JavaScript配置的相关部分如下所示:
var netConnectionUrl = "rtmpte://amazon_distribution_domain_name.cloudfront.net/cfx/st";
var clipUrl = "folder/folder/videofile.mp4";
$.post('/path/getSignedUrl.php', {clipUrl:clipUrl}, function(signedUrl){
clipUrl = 'mp4:'+signedUrl;
...then add netConnectionUrl and clipUrl to Flowplayer config...
});
我更喜欢使用PHP而不是Flowplayer插件,以便在签名URL之前我还可以检查以确保用户已登录并拥有产品等,并且能够执行我的域和IP地址使用PHP进行检查,无需使用Ant或Flash Builder进行编译。这样私钥就会离开客户端。使用插件意味着盗版者可能会窃取SWF文件,但是通过使用AJAX并在服务器上签名网址,意味着无法窃取。
答案 1 :(得分:0)