基於SRS伺服器實現Android-Web端影片通話(1):SRS伺服器啟用HTTPS

語言: CN / TW / HK

基於SRS伺服器實現Android-Web端影片通話(1):SRS伺服器啟用HTTPS
基於SRS伺服器實現Android-Web端影片通話(2):Android端從SRS伺服器拉取WebRTC流
基於SRS伺服器實現Android-Web端影片通話(3):Android端向SRS伺服器推送WebRTC流

安裝環境: Linux version 5.8.0-63-generic ([email protected]) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #71~20.04.1-Ubuntu SMP Thu Jul 15 17:46:08 UTC 2021

原始碼,如果github訪問速度過慢,可以到映象地址。下載檔案操作不做闡述。

注意:如果要使用WebRTC,則需要使用SRS4.0版本。

官方文件,還是很全的。 由於網頁想要呼叫攝像頭和麥克風需要使用HTTPS或者localhost,所以要實現Android-Web端互通,則需要啟用HTTPS。SRS是支援HTTP、HTTPS流互轉的,可以Android端請求HTTP(如果使用HTTPS,沒有有效證書的話,可以忽略證書請求)、Web端HTTPS。

編譯完後先來看下conf目錄,用於啟動服務使用的配置檔案。 shell [email protected]:/home/shencoder/srs/trunk/conf# ls bandwidth.conf exec.conf http.hls.conf push.flv.conf clion.conf ffmpeg.transcode.conf http.hooks.callback.conf push.mpegts.over.udp.conf clion-ingest.conf forward.master.conf http.mp3.live.conf push.rtsp.conf compatible.conf forward.slave.conf http.server.conf realtime.conf console.conf full.conf https.flv.live.conf regression-test.conf dash.conf go-oryx-edge2.conf https.hls.conf rtc2rtmp.conf demo.19350.conf go-oryx-edge.conf https.hooks.callback.conf rtc.conf demo.conf hds.conf https.rtc.conf rtmp.conf docker.conf hls.conf http.ts.live.conf security.deny.publish.conf dvr.mp4.conf hls.realtime.conf ingest.conf server.crt dvr.path.conf http.aac.live.conf ingest.rtsp.conf server.key dvr.segment.conf http.api.raw.conf origin.cluster.edge.conf srs.conf dvr.session.conf http.flv.live.conf origin.cluster.serverA.conf srt2rtc.conf edge2.conf http.flv.live.edge1.conf origin.cluster.serverB.conf srt.conf edge.conf http.flv.live.edge2.conf origin.cluster.serverC.conf transcode2hls.audio.only.conf edge.token.traverse.conf http.heartbeat.conf origin.conf transform.edge.conf dvr.xxx.conf:錄影相關 https.xxx.conf:https相關 rtcxxx.conf:WebRTC相關

我們也可以自定義配置檔案來滿足我們的需求。

比如說我們要滿足一個https、WebRTC、RTMP、錄影的功能,大概就是這樣(https.rtc2rtmp.dvr.conf): ``` listen 1935; max_connections 1000; daemon off; srs_log_tank console;

http_server { enabled on; listen 8080; dir ./objs/nginx/html; https { enabled on; listen 8088; key ./conf/server.key; cert ./conf/server.crt; } }

http_api { enabled on; listen 1985; https { enabled on; listen 1990; key ./conf/server.key; cert ./conf/server.crt; } } stats { network 0; } rtc_server { enabled on; # Listen at udp://8000 listen 8000; # # The $CANDIDATE means fetch from env, if not configed, use * as default. # # The * means retrieving server IP automatically, from all network interfaces, # @see https://github.com/ossrs/srs/wiki/v4_CN_RTCWiki#config-candidate candidate $CANDIDATE; }

vhost defaultVhost { rtc { enabled on; rtc_to_rtmp on; } http_remux { enabled on; mount [vhost]/[app]/[stream].flv; } dvr { enabled on; dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].flv; dvr_plan session; } } ``` 上面這種方式是系統自帶的,要注意的是web端https頁面不能呼叫http請求,推拉流也要是https的地址,注意埠。

還有另外一個操作,相當於是轉發,檢視具體操作流程

有一個問題就是部分Chrome瀏覽器無法正常使用WebRTC,黑屏,使用Edge就可以。還望知道的老鐵告訴原因。