[英]Handling / receiving live video webcam stream from WebRTC or any browser based capturing mechanism to the server using ASP.NET MVC
我們需要從WebRTC(或客戶端網絡攝像頭的任何其他捕獲機制)捕獲實時視頻流,即使它不是在所有瀏覽器上都支持,而是作為PoC支持。
這個實時視頻需要由服務器組件(ASP.Net MVC / Web API)處理,我想服務器上的代碼看起來像:
[HttpPost]
public ActionResult HandleVideoStream(Stream videoStream)
{
//Handle the live stream
}
尋找任何關鍵字或有用的鏈接。
我們已經實現了一種使用base64 jpg發送單個幀的方法,但這根本沒用,因為base64編碼有很大的開銷,因為我們可以使用任何視頻編碼來更有效地發送視頻(發送差異)在使用VPx -vp8-的幀之間,所需的解決方案需要從客戶端的網絡攝像頭捕獲視頻並將其作為流 - 或數據塊實時(未記錄)發送到服務器(asp.net)代表新的視頻數據。
您的問題太廣泛,並且要求異地資源在stackoverflow上被視為偏離主題。 為了避免傾向於意見的陳述,我將限制一般概念的答案。
閃存/ RTMP
WebRTC
尚未在所有瀏覽器上提供,因此從當前使用的瀏覽器捕獲網絡攝像頭輸入的最廣泛使用的方式是通過插件。 最常見的解決方案是使用Adobe Flash Player ,無論是否喜歡它。 這是由於最近版本中的H.264
編碼支持,以及音頻的AAC
, MP3
等。
流式傳輸使用RTMP協議完成,該協議最初設計用於Flash通信。 該協議適用於TCP
,具有多種風格,如RTMPS
( RTMP
over TLS/SSL
for encryption), RTMPT
( RTMP
封裝在HTTP
用於防火牆遍歷)。
流通常使用FLV容器格式。
您可以輕松找到使用Flash捕獲網絡攝像頭輸入並將其流式傳輸到RTMP
服務器的開源項目。
在服務器端,您有兩個選擇:
RTMP
服務器直接與發送庫通信並讀取流 RTMP
服務器並在ASP
實現一個客戶端(您也可以根據您嘗試對應用程序執行的操作來動態轉碼傳入流)。 的WebRTC
使用WebRTC
您可以:
WebRTC
的對等通信功能,服務器是其中一個對等體。 Adam Roach提供了第二種情況的可能解決方案,我還沒有親自測試過。
- 瀏覽器檢索其中包含javascript的網頁。
- 瀏覽器執行javascript,其中:
- 使用
getUserMedia
獲取相機的句柄,- 創建
RTCPeerConnection
- 在
RTCPeerConnection
上調用createOffer
和setLocalDescription
- 向包含商品的服務器發送請求(采用
SDP
格式)- 服務器處理商品
SDP
並生成自己的答案SDP
,並在其響應中返回瀏覽器。- 該JavaScript調用
setRemoteDescription
在RTCPeerConnection
啟動媒體流。- 服務器開始從瀏覽器接收
DTLS/SRTP
數據包,然后根據需要執行任何操作,直到並包括以易讀的格式存儲在本地硬盤驅動器上。
這將在WebM
上使用VP8
和Vorbis
不是SRTP
( UDP
,也可以使用TCP
)。
除非您可以使用包裝器直接在ASP
實現RTCPeerConnection
否則您需要一種方法將流轉發到您的服務器應用程序。
PeerConnection API
是WebRTC
的強大功能。 它目前由Web Hang使用的WebRTC版本使用。 您可以閱讀: 環聊如何使用WebRTC 。
同意這是一個偏離主題的問題,但我最近碰到了相同的問題/要求,我的解決方案是使用來自WebRTCExperiments的MultiStreamRecorder 。 這基本上給你一個每X秒的音頻/視頻流的“斑點”,並且證明你可以上傳你的ASP.NET MVC或控制器的WebAPI 這里 。 您可以按部分對服務器上的blob進行實時處理,也可以將它們連接到文件,然后在流停止后進行處理。 請注意,並非所有瀏覽器都完全支持此庫中使用的API,例如,目前還沒有iOS支持。
我的服務器端分析要求用戶說出完整的句子,所以另外我使用PitchDetect.js在將部分blob發送到服務器之前檢測音頻流中的靜音。 使用這種類型的設置,您可以將客戶端配置為在完成通話后將部分blob發送到服務器,而不是每隔X秒。
至於實現1-2秒延遲,我建議查看WebSockets以進行交付,而不是HTTP POST - 但您應該使用這些選項並根據您的要求選擇最佳渠道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.