Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video streaming 随时可用的Red5应用程序_Video Streaming_Red5 - Fatal编程技术网

Video streaming 随时可用的Red5应用程序

Video streaming 随时可用的Red5应用程序,video-streaming,red5,Video Streaming,Red5,我正在寻找一个现有的Red5应用程序 我们的需求非常基本: *只需要一个提要 *通过IP地址或用户/通行证限制广播 *按用户/通行证或令牌限制查看 我发现了,但它似乎缺少身份验证功能 一个开源的应用程序会很棒,但如果成本不太高,我可以接受商业产品 RTMPT解决方案似乎适合限制查看访问,但任何人都可以在未经授权的情况下在我的服务器上开始广播。如何限制广播访问?我使用RTMPT(HTTP上的RTMP)使用以下IP安全机制: 在我的apache配置中使用mod_proxy将所有RTMPT请求传递给r

我正在寻找一个现有的Red5应用程序

我们的需求非常基本:
*只需要一个提要
*通过IP地址或用户/通行证限制广播
*按用户/通行证或令牌限制查看

我发现了,但它似乎缺少身份验证功能

一个开源的应用程序会很棒,但如果成本不太高,我可以接受商业产品


RTMPT解决方案似乎适合限制查看访问,但任何人都可以在未经授权的情况下在我的服务器上开始广播。如何限制广播访问?

我使用RTMPT(HTTP上的RTMP)使用以下IP安全机制:

在我的apache配置中使用mod_proxy将所有RTMPT请求传递给red5(端口5080),但/open/1请求除外:

#send open/1 request to authentification script:
Alias /open/1 /var/www/html/auth.php

#other RTMP request directly to red5:
ProxyPass /send http://localhost:5080/send
ProxyPassReverse /send http://localhost:5080/send
ProxyPass /idle http://localhost:5080/idle
ProxyPassReverse /idle http://localhost:5080/idle
ProxyPass /close http://localhost:5080/close
ProxyPassReverse /close http://localhost:5080/close
ProxyPass /fcs http://localhost:5080/fcs
ProxyPassReverse /fcs http://localhost:5080/fcs
当用户启动播放器时,网页将首先联系php脚本以验证用户是否登录。如果是这样,其IP地址将临时存储,包括当前时间(时间戳)。然后RTMPT流将在端口80上启动。现在auth.php脚本将从播放器接收/open/1请求。它将检查IP地址和时间戳。如果IP地址存在且时间戳不早于3秒,则/open/1请求将传递给red5。结果(标识符)被传递回播放器。在PHP中:

<?php
 //after user is verified, send /open/1 request to red5:
 $data = `curl -s -F a=b localhost:5080/open/1`;
 $data_size = strlen($data);

 header("Content-Type: application/x-fcs");
 header("Connection: Keep-Alive");
 header("Content-Length: $data_size");
 header('Cache-Control: no-cache');

 echo $data;  //return answer from red5 (identifier) back to player
 exit;
?>


不幸的是,/open/1请求不包含来自网页的任何cookie或referer信息,只有来自客户端的远程地址(IP地址)和请求时间是来自PHP$服务器变量(使用JW player)的有用信息。

。。。我在POST/fcs/ident2上得到了一个404(但我可以通过浏览器在:5080端口上访问该url)。然后,我的流在请求POST/idle/xx/xxxx时暂停,http状态为400(错误请求)。有什么想法吗?嗯,空闲后返回http 200几秒钟,然后返回http 400。视频从不播放。404对于/fcs/indent2是正确的,请参阅协议。然后服务器需要/open/1请求。看起来您的PHP脚本没有按预期工作,因为/idle请求没有得到响应。请先将/open/1添加到ProxyPass,而不使用PHP脚本。如果这是工作,测试PHP脚本。简单地将$data写入文件,例如:file\u put\u contents('log.txt',“data:$data\n”,file\u APPEND);日志文件应该显示red5返回的标识符。或者直接从命令行php auth.php运行auth.php。它应该显示返回的id,大约13个字符。确保PHP脚本具有exec权限(0755)。auth.PHP脚本似乎可以工作,但ID不是13个字符长。这是一个整数。我第一次的id是“6”,第二次之后是“8”。