
我試圖能夠透過 HTTP 建立視訊串流,這將採用下面描述的特定授權方法,但我不確定如何解決這個問題。
目前我正在使用 Motion 包,它允許您輕鬆地透過網路轉發本機攝影機的視訊串流。它還提供使用者名稱和密碼授權。然而,對於我的用例來說,這並不理想。
我的想法是,我希望能夠按需向用戶提供鏈接,這將允許他在有限的時間內重複訪問流。理想情況下,這將是 URL 參數形式的某種標記(https://www.link.com/stream?authId=FGJNDKD1256DD),這將允許任何擁有此令牌的人連接到串流,無需任何其他授權,但令牌也會在 1 小時後過期。
有沒有人知道如何實現這一目標?我是否需要編寫自己的具有自定義令牌生成和授權處理功能的 Web 應用程序,或者是否有任何 Web 伺服器可以提供此類開箱即用的授權?
謝謝
答案1
為了實現所需的視訊串流授權方法,您可能需要實施自訂解決方案。一種可能的方法是為請求存取視訊串流的每個使用者產生唯一的令牌,並將該令牌與到期時間相關聯。
您可以採取以下一些步驟來實現此目的:
- 產生隨機令牌字串:您可以使用Python中的uuid等函式庫來產生唯一的令牌字串。
- 儲存令牌及其過期時間:您可以將此資訊儲存在資料庫中,例如 SQLite 或 MySQL。每次使用者要求存取視訊串流時,您都可以根據資料庫檢查令牌以驗證其有效性和過期時間。
- 建立用於視訊串流的自訂端點:您可以建立一個接受令牌作為參數並根據資料庫進行檢查的自訂端點。如果令牌有效且未過期,則終端可以傳回視訊串流。如果令牌無效或已過期,端點可以傳回錯誤訊息。
- 提供視訊串流:您可以使用 NGINX 等 Web 伺服器來提供視訊串流。 NGINX 支援 HTTP Live Streaming (HLS),可以提供多種格式的視頻,包括 MP4 和 MPEG-TS。
總的來說,這種方法需要一些程式設計和資料庫設置,但它應該允許您提供您正在尋找的特定授權方法。
答案2
只需給他們一個唯一的 ID,例如 UUID 或 GUID,或一些帶有時間 + salt 值的哈希用戶名。在建立時將該金鑰儲存在具有到期日的查找表中。
URL 傳入 key,key 會被查找,如果過期,則不予執行。
定期清除過期的密鑰表。