簡體   English   中英

如何使用 WebRTC 將視頻流式傳輸到 RTMP?

[英]How to use WebRTC to stream video to RTMP?

我正在嘗試構建一項服務,將您的屏幕從瀏覽器流式傳輸到客戶端(類似於 twitch)。

我已經完成的是我用 rtmp 構建了一個工作的 nginx 服務器,我使用 OBS 對其進行了測試。 這很好用。

我的問題是如何使用 WebRTC 將屏幕從瀏覽器(而不是 OBS 或其他廣播公司)流式傳輸到帶有 RTMP 的 nginx 服務器?

對於 RTSP<->WebRTC / RTMP<->WebRTC 轉換,您需要運行某種 WebRTC 網關/媒體服務器軟件,該軟件適用於所有這些格式/協議,並且可以在所有這些格式/協議之間進行傳輸。 試試 Wowza / Unreal Media Server / Flashphoner。 https://en.wikipedia.org/wiki/Comparison_of_streaming_media_systems

因此,在您的情況下,您想通過 WebRTC 將屏幕從瀏覽器發布到媒體服務器(H264 編解碼器是必須的),然后使用 nginx-rtmp 模塊將 RTMP 流從媒體服務器拉到 nginx 服務器。

請注意,反之亦然:您可以通過 RTMP 將流推送到媒體服務器(例如 OBS 屏幕截圖),然后通過 WebRTC 將此流從媒體服務器發送到 Web 瀏覽器。

這些轉換的主要問題是編解碼器兼容性:視頻必須使用 H264,但如果您需要音頻,則必須將 Opus 轉碼為 AAC。

SRS(Simple Realtime Server)也能夠將 WebRTC 轉換為 RTMP,反之亦然。

WebRTC to RTMP用於 H5 發布者進行直播。 因為RTMP現在被禁用(在2021.12),所以H5發布流的唯一方法是WebRTC。 我們還需要將 WebRTC 轉換為 RTMP,這樣我們就可以復用其他平台的流。

並且 SRS 還支持RTMP to WebRTC ,這是低延遲的實時流媒體。 一般RTMP在3~5s延遲左右,而RTMP to WebRTC0.8~1s左右延遲。 請注意,H5 不支持 RTMP,但HTTP-FLV運行良好。

除此之外,SRS 還支持 HTTP-FLV,通過flv.js使 H5 能夠播放 RTMP。 延遲也低於 HLS 或 LLHLS。

注意:其他直播功能也很重要,因為跑題了,所以請查看 SRS 的 wiki,如 DVR-MP4、DASH、Cluster、HTTP-API 等。

也可以用Nginx從SRS拉RTMP流,或者讓SRS把RTMP轉發給Nginx,通過SRS將WebRTC隱蔽到RTMP流之后。

請不要使用 WebRTC 進行直播,除非您知道自己在做什么,否則請閱讀為什么以及為什么不使用 WebRTC 進行直播

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM