Red5和FLV文件的唯一命名

时间:2011-12-07 22:31:28

标签: php red5 rtmp

我在服务器上实现了Red5,并通过网页集成了Red5Recorder,使用户能够通过网络摄像头将文件记录到服务器。

然而,我无法弄清楚的是如何在服务器上唯一地命名结果文件。

Red5Recorder有一个参数“fileName”,可以通过JavaScript为它添加一个新值来修改,但这依赖于客户端安全性(又名:不存在)。如果被利用(这不会很难),它可以允许用户将视频录制为另一个用户。

鉴于记录视频的所有用户都将登录(具有活动的$ _SESSION []变量),如果有办法根据此输入创建文件名,那将是完美的。

这里有没有人有这方面的经验?想法?解决方法?我不熟悉RTMP或如何管理它(我到目前为止对我来说非常令人印象深刻)。

感谢您提供任何帮助,建议或指示!

编辑 -

这个问题仍然存在,但我正在努力解决这个问题。概念是网页加载了由PHP生成的随机令牌,插入到JavaScript中以设置'fileName'属性。此令牌也会插入到数据库中,并归因于用户的帐户。当.flv命中流目录时,它与数据库中的令牌匹配并与该用户关联,此时令牌被销毁(确保它是'使用一次'令牌)。

确认电子邮件帐户背后的概念几乎相同 - 只是确认我们正在确认视频的帐户。

2 个答案:

答案 0 :(得分:0)

如何将uniqid()session_name()一起使用。

答案 1 :(得分:0)

这肯定听起来很复杂,我敢肯定,但这完全可以通过Red5。您可以通过RTMP URL传递查询字符串,并在服务器端拦截它以构建自定义文件名。这将需要修改您正在使用的Red5应用程序。与此相关:

rtmp://yourserver/yourapp/room?streamName=mystream

可以在应用程序连接中访问,如下所示:

  public boolean appConnect(IConnection conn, Object[] params) {
    Map connParams = conn.getConnectParams();
    if (connParams != null) {
      String streamName = connParams.get("queryString") != null ? connParams.get("queryString").get("streamName") : null;
    }
  }