2011-12-07 60 views
1

我已經在服務器上實現了Red5,並通過網頁集成了Red5Recorder,這導致用戶能夠通過它們的網絡攝像頭將文件記錄到服務器。Red5和FLV文件的唯一命名

但是,我不能完全弄清楚,但是,如何唯一地命名服務器上生成的文件。

Red5Recorder有一個參數「fileName」,可以通過JavaScript給它一個新的值來修改它,但依賴於客戶端安全性(又名:不存在)。如果被利用(這不會很難),它可以允許用戶將視頻錄製爲另一個用戶。

鑑於錄製視頻的所有用戶都將登錄(具有活動的$ _SESSION []變量),如果有基於此輸入創建文件名的方法,那將是完美的。

有沒有人在這裏有任何經驗?想法?解決方法?我不熟悉RTMP或者如何管理它(我得到的遠遠不止這些,對我來說是非常令人印象深刻的)。

感謝您提供任何幫助,建議或指導!

編輯 -

的問題仍然有效,但我工作的一個解決此的時刻。這個概念可能是網頁加載了一個由PHP生成的隨機標記,插入到JavaScript中以設置'fileName'屬性。該令牌也被插入到數據庫中,並歸因於用戶的帳戶。當.flv命中streams目錄時,它會與DB中的一個令牌相匹配並與該用戶相關聯,此時令牌被銷燬(確保它是「使用一次」令牌)。

這與確認電子郵件帳戶背後的概念幾乎相同 - 只是不是確認帳戶,而是確認視頻。

回答

0

如何使用uniqid()session_name()

+0

是否Red5的配合PHP這樣呢?我不知道如何將兩者聯繫起來,主要是因爲我不知道Red5如何在後端工作。 – user1075581

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; 
    } 
    }