rtmp 調研整理

涉及技術點

  • nginx
  • ffmpeg
  • rtmp 協議
  • webrtc
  • WCS服務器

其實整體來說可能跟 mediasoup 沒有太多緊密聯繫(站在bs結構)h5的方式沒有辦法直接推流到 rtmp地址,下面一點一點來總結整理。

nginx 方面

這裏研究了 nginx 搭建rtmp, 安裝nginx 需要 --with-rtmp-module,
安裝成功之後配置rtmp服務,

rtmp {
    server {
        listen 1935;

        application room {
            live on;

            #record keyframes;
            #record_path /tmp;
            #record_max_size 128K;
            #record_interval 30s;
            #record_suffix .this.is.flv;

            #on_publish http://localhost:8080/publish;
            #on_play http://localhost:8080/play;
            #on_record_done http://localhost:8080/record_done;
        }

            application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
            hls_fragment 10s;     #每個視頻切片的時長。
            hls_playlist_length 60s;  #總共可以回看的事件,這裏設置的是1分鐘。
            #hls_continuous on; #連續模式。
            #hls_cleanup on;    #對多餘的切片進行刪除。
            #hls_nested on;     #嵌套模式。
        }
    }
}

重啓 nginx

ffmpeg 模擬推流

這裏沒有太多東西要說的


ffmpeg -re -i /home/lee/video.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost/room/123123

rtmp 協議

RTMP(Real Time Message Protocol)由 Adobe 公司提出流媒體協議,並且是私有協議,未完全公開,用來解決多媒體數據傳輸流的多路複用(Multiplexing)和分包(packetizing)的問題,RTMP協議一般傳輸的是 flv,f4v 格式流。一般在 TCP 1個通道上傳輸命令和數據。

  • 優勢:

在於低延遲,穩定性高,支持所有攝像頭格式
專爲流媒體開發的協議,對底層的優化比其它協議更加優秀

  • 劣勢:

瀏覽器需要加載 flash插件才能播放。
RTMP 爲 Adobe 私有協議,很多設備無法播放,特別是在 iOS 端,需要使用第三方解碼器才能播放
基於 TCP 傳輸,非公共端口,可能會被防火牆阻攔

webrtc to rtmp 服務端轉換的話。

這裏轉換可能會耗費資源較多。
在這裏插入圖片描述

當然還有其他方案,不需要服務端轉換, 直接客戶端推流 rtmp 和 webrtc 兩種 ,如果推rtmp流就需要用端的方式,純bs結構不支持了, 前面rtmp提到了

wcs服務器

這塊不太瞭解了就

參考連接
  • https://www.kutu66.com/Web_Development/article_2367
  • https://www.helplib.cn/%E5%AD%A6%E4%BB%A5%E8%87%B4%E7%94%A8/7-ways-to-stream-rtsp-on-the-page
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章