我在服务器上实现了Red5,并通过网页集成了Red5Recorder,使用户能够通过网络摄像头将文件记录到服务器。
然而,我无法弄清楚的是如何在服务器上唯一地命名结果文件。
Red5Recorder有一个参数“fileName”,可以通过JavaScript为它添加一个新值来修改,但这依赖于客户端安全性(又名:不存在)。如果被利用(这不会很难),它可以允许用户将视频录制为另一个用户。
鉴于记录视频的所有用户都将登录(具有活动的$ _SESSION []变量),如果有办法根据此输入创建文件名,那将是完美的。
这里有没有人有这方面的经验?想法?解决方法?我不熟悉RTMP或如何管理它(我到目前为止对我来说非常令人印象深刻)。
感谢您提供任何帮助,建议或指示!
编辑 -
这个问题仍然存在,但我正在努力解决这个问题。概念是网页加载了由PHP生成的随机令牌,插入到JavaScript中以设置'fileName'属性。此令牌也会插入到数据库中,并归因于用户的帐户。当.flv命中流目录时,它与数据库中的令牌匹配并与该用户关联,此时令牌被销毁(确保它是'使用一次'令牌)。
确认电子邮件帐户背后的概念几乎相同 - 只是确认我们正在确认视频的帐户。
答案 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; } }