1

我到处搜索,但找不到答案。我在 PHP 中使用 flowplayer 和 amazon s3。如果我复制和粘贴,该链接在浏览器中有效,但似乎 flowplayer 不喜欢查询字符串。我尝试替换 html 实体,然后对其进行 url 编码。我只是尝试对它进行 url 编码。我只是尝试删除 & 并替换为 & 等。这些都不起作用。

我的目标是使用流播放器播放来自 amazon s3 的 url 签名视频。

我知道我没有要显示的代码,因为没有一个是“正确的”,但有人有什么建议吗?他们将不胜感激。

4

2 回答 2

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 之前检查以确保用户已登录并拥有产品等,并且能够使用 PHP 进行域和 IP 地址检查也无需为使用 Ant 或 Flash Builder 编译而大惊小怪。这样,私钥就不会离开客户端。使用插件意味着盗版者可能会窃取 SWF 文件,但通过使用 AJAX 并在服务器上签名 url,则意味着无法窃取。

于 2014-04-19T09:01:47.447 回答
0

使用此扩展程序创建签名 URL 并确保其有效

确保路径正确,即本地或全局路径....

尝试播放未签名的 URL,然后将其翻转到已签名的 URL

于 2012-12-15T18:33:46.203 回答