2015-06-10 99 views
5

我在客戶端視頻流錄製在第三方服務器https://tokbox.com/上的場景中使用WebRTC。我想在錄製的視頻中添加某種水印。如何修改WebRTC MediaStream視頻軌道的內容?

調查把我帶到http://w3c.github.io/webrtc-pc/#mediastreamtrack這一頁,它似乎在技術上是可行的,因爲它說:

一個MediaStream使用getUserMedia收購(),默認情況下,一個應用程序訪問。這意味着應用程序能夠訪問曲目內容,修改其內容,並將該媒體發送給它選擇的任何對等體。

這正是我所需要的,但是我沒有找到任何這個功能的例子或解釋。我想從WebRTC專家那裏得到一些建議。

+0

WebRTC只處理捕獲和分發內容,不關心任何後處理。添加水印是與視頻編解碼器相關的問題 - VP8或VP9。 AFAIK無法在不轉碼視頻的情況下添加水印。但可能有一些商業解決方案無需轉碼,因爲這是一個常見問題。 –

回答

6

您需要使用畫布將視頻從getUserMedia路由到此處,然後使用canvas.captureStream()將其重新轉換爲MediaStream。這很好 - 除了canvas.captureStream(),雖然在工作組中同意,但實際上尚未包含在規範中。 (Mozilla編寫的建議措詞有一個拉取請求。)

就實現而言:captureStream()的初始實現只是在Firefox Nightly(41)中着陸,並且它仍然在pref後面,直到一個bug或兩個是固定的。您可以在about:config中使用canvas.capturestream.enabled啓用它。您可以在Mozilla's test page for captureStream()處看到演示。

這樣做沒有canvas.captureStream()將是艱難的;你最好的辦法是做getUserMedia-> canvas->,然後使用video.captureStream()(或captureStreamUntilEnded()) - 但是,video.captureStream也在等待正式驗收。 Mozilla已經有一段時間了video.captureStream(),但我認爲它在FF 38(當前版本)中有效。