使用PHP为AWS生成签名的RTMP URL

时间:2014-08-26 17:39:22

标签: php actionscript-3 amazon-web-services

我已经创建了一个PHP函数,可以为AWS生成签名URL。我已经将它用于各种http内容。

我现在需要使用它来生成签名的RTMP链接。我在文档中看到,我应该只使用没有扩展名的文件夹/文件名。

鉴于我的存储桶结构为dms/myfile.mp4,我将dms/myfile传递给我的PHP函数,并生成散列网址。散列URL如下所示:

dms/myfile?Expires=1409073611&Signature=Iw2Df~JXc4psMp0f8qQz8WtxCbW54ErcN--CwCEGo7yf8Fg1wH-qFY9AjCvsV04w0piWoRzlYgEh6uz6tOaCwiEBZPn41FYFStvq3VXh34s1bEi4HQEDh0~nCXW5RZaUnHGcFWzK25HddmfY-4Yvw5fIHaIxMwIv9HZ3yIo0S~HqKO2h0ZKnf4sJ6vDeiVQ3Lx73bKJQV2kISIybu7QyUGQTH0XLWCAz5hq-zVuz~xbqcHqO27~sVdSXhPw4jLDGDnnhp6oXWF-SV-0eK8QImu1saWlCxr3bWVA1MTrNExw0LsTbjJGLA1Vsd74CzI6mVR8V6NjX82ZONAcVPAs4QQ__&Key-Pair-Id=APKAI3ZSOLRDPPSNWPDA

在我的AS3代码中,我成功连接到RTMP分发服务器,然后尝试播放动态流项目:

mp4:dms/myfile?Expires=1409073611&Signature=Iw2Df~JXc4psMp0f8qQz8WtxCbW54ErcN--CwCEGo7yf8Fg1wH-qFY9AjCvsV04w0piWoRzlYgEh6uz6tOaCwiEBZPn41FYFStvq3VXh34s1bEi4HQEDh0~nCXW5RZaUnHGcFWzK25HddmfY-4Yvw5fIHaIxMwIv9HZ3yIo0S~HqKO2h0ZKnf4sJ6vDeiVQ3Lx73bKJQV2kISIybu7QyUGQTH0XLWCAz5hq-zVuz~xbqcHqO27~sVdSXhPw4jLDGDnnhp6oXWF-SV-0eK8QImu1saWlCxr3bWVA1MTrNExw0LsTbjJGLA1Vsd74CzI6mVR8V6NjX82ZONAcVPAs4QQ__&Key-Pair-Id=APKAI3ZSOLRDPPSNWPDA

请注意' mp4'在签名网址之前

出于某种原因,当我尝试播放视频时,我收到错误

Failed to play dms/myfile; stream not found.

任何人都知道我在这里做错了什么?我可以向你保证文件确实存在。

1 个答案:

答案 0 :(得分:0)

这个错误背后有几个原因

  1. 如果文件是mp4,那么使用mp4:{file_name_without_extension}?signed_url
  2. 如果文件是flv,请使用{file_name_with_extension}?signed_url
  3. 如果您要创建基于时间的签名网址,那么当您访问网址时,时间可能会结束。您需要增加时间或需要检查服务器时间,因为时间可能是原因。
  4. 检查文件存在,并且您正在使用相同的RTMP网络访问存在文件的存储桶。
  5. 同时在创建RTMP网络时,您应该使用限制查看器访问权限 (使用签名的URL) - 是