一、概述
在使用srs視頻服務(wù)器時,一直都是使用默認的端口配置。但是,這些默認端口在某些時候可能已經(jīng)被占用了,就需要更改端口了。
注意注意注意:使用docker啟動srs,在更換端口一定要下面的內(nèi)容。
二、使用docker啟動srs,換端口時錯誤的方式
網(wǎng)絡(luò)拓撲圖:
?
啟動命令:外部端口1936映射內(nèi)部1935? 和 外部端口8001映射內(nèi)部8000端口
docker run -it --name srs4.0-test --restart=always -v C:\5G\5GApi\static\DVR-video:/usr/local/srs/static/DVR-video -p 1936:1935 -p 1985:1985 -p 8080:8080 -p 10080:10080/udp -p 8001:8000/udp registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/rtmp2rtc.conf
修改rtmp2rtc.conf配置文件:
1、給容器安裝vim
#查看運行的docker
docker ps#新開一個終端進入docker容器
docker exec -it srs4.0-test /bin/bash#先更新apt-get
apt-get update#安裝vim
apt-get install vim -y
2、配置容器可以訪問宿主機的域名
進入下面的目錄:
C:\Windows\System32\drivers\etc修改hosts文件:添加
127.0.0.1? host.docker.internal#就可以在容器中通過? http://host.docker.internal:8888 訪問到宿主機上部署的服務(wù)了
3、修改srs的配置文件
docker exec -it srs4.0 /bin/bash
#修改配置文件(修改步驟1中默認的配置文件)
vi conf/rtmp2rtc.conf
###########配置文件內(nèi)容
listen 1935; #必須有,rtmp協(xié)議,公網(wǎng)必須開放這個端口
max_connections 1000;
daemon off;
srs_log_tank console;
http_api {
enabled on;
#必須有,webrtc播放需要,可以在nginx配置轉(zhuǎn)發(fā),location /rtc {},無需開放該端口
listen 1985;
}
http_server {
enabled on;
listen 8080;
#開發(fā)階段需要,這個是srs自帶的web頁面,可以使用nginx代理
dir ./objs/nginx/html;
}
rtc_server { #webrtc服務(wù),必須開放公網(wǎng)8000端口
enabled on;
listen 8000;
candidate 公網(wǎng)IP地址;
}
# @doc https://github.com/ossrs/srs/issues/1147#issuecomment-577607026
vhost __defaultVhost__ {
#這個是rtc配置,開啟rtmp轉(zhuǎn)rtc
rtc {
enabled on;
rtmp_to_rtc on;
rtc_to_rtmp on;
}
#開啟http-flv
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
#rtmp的低時延配置
tcp_nodelay on;
min_latency on;
play {
gop_cache off;
queue_length 10;
mw_latency 100;
}
publish {
mr off;
}
#視頻錄制功能
dvr {
enabled on;
dvr_path /usr/local/srs/static/DVR-video/[app]/[01]-[2006]/[02]-day/[stream]-[2006]-[01]-[02]_[15]_[04]_[05].mp4;
dvr_plan session; #存一次推流中的所有的視頻
dvr_duration 30;
dvr_wait_keyframe on;
}
http_hooks {
#回調(diào)函數(shù),on是啟動,off是中止
enabled off;
on_dvr http://host.docker.internal:8888/srs/dvr;
#視頻錄制的回調(diào)函數(shù),一個視頻錄制完成后,會向給url發(fā)起post請求
on_publish http://host.docker.internal:8888/srs/publish;
on_unpublish http://host.docker.internal:8888/srs/un_publish;
on_play http://host.docker.internal:8888/srs/play;
on_stop http://host.docker.internal:8888/srs/stop;
}
}
此時推流rtmp到srs服務(wù)器時,在使用srs自帶的播放器拉取webrtc流,就會發(fā)現(xiàn)拉取不到,你可以停止推流rtmp。
到:C:\5G\5GApi\static\DVR-video? 目錄下查看是否有錄制的視頻,發(fā)現(xiàn)有該視頻。
總結(jié):
1、這種配置,可以錄制,但是不能播放。
2、具體原因在于公網(wǎng)IP只將8001和1936端口映射個宿主機,而宿主機又是將8001和1936映射給srs容器的8000和1935,最致命的是srs服務(wù)器是根據(jù)配置文件中的8000和1935端口來生成對應(yīng)可以播放webrtc流的驗證數(shù)據(jù),導致無法播放
三、正確的方法
1、啟動srs容器:宿主機端口和容器端口映射時,保持端口一致
docker run -it --name srs4.0-test --restart=always -v C:\5G\5GApi\static\DVR-video:/usr/local/srs/static/DVR-video -p 1936:1936 -p 1985:1985 -p 8080:8080 -p 10080:10080/udp -p 8001:8001/udp registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/rtmp2rtc.conf
2、配置srs配置文件:使用宿主機端口啟動文章來源:http://www.zghlxwxcb.cn/news/detail-636619.html
listen 1936; #必須有,rtmp協(xié)議,公網(wǎng)必須開放這個端口
max_connections 1000;
daemon off;
srs_log_tank console;
http_api {
enabled on;
#必須有,webrtc播放需要,可以在nginx配置轉(zhuǎn)發(fā),location /rtc {},無需開放該端口
listen 1985;
}
http_server {
enabled on;
listen 8080;
#開發(fā)階段需要,這個是srs自帶的web頁面,可以播放webrtc等視頻,公網(wǎng)無需開發(fā)這個端口
dir ./objs/nginx/html;
}
srt_server { #沒有使用到srt服務(wù),無需開發(fā)10080端口
enabled on;
listen 10080;
maxbw 1000000000;
connect_timeout 4000;
latency 20;
peerlatency 20;
recvlatency 20;
}
rtc_server { #webrtc服務(wù),必須開放公網(wǎng)8000端口
enabled on;
listen 8001;
candidate 112.94.31.117;
}
# @doc https://github.com/ossrs/srs/issues/1147#issuecomment-577607026
vhost __defaultVhost__ {
#這個是rtc配置,開啟rtmp轉(zhuǎn)rtc
rtc {
enabled on;
rtmp_to_rtc on;
rtc_to_rtmp on;
}
#開啟http-flv
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
#rtmp的低時延配置
tcp_nodelay on;
min_latency on;
play {
gop_cache off;
queue_length 10;
mw_latency 100;
}
publish {
mr off;
}
#視頻錄制功能
dvr {
enabled on;
dvr_path /usr/local/srs/static/DVR-video/[app]/[01]-[2006]/[02]-day/[stream]-[2006]-[01]-[02]_[15]_[04]_[05].mp4;
dvr_plan session; #存一次推流中的所有的視頻
dvr_duration 30;
dvr_wait_keyframe on;
}
http_hooks {
#回調(diào)函數(shù),on是啟動,off是中止
enabled off;
on_dvr http://host.docker.internal:8888/srs/dvr;
#視頻錄制的回調(diào)函數(shù),一個視頻錄制完成后,會向給url發(fā)起post請求
on_publish http://host.docker.internal:8888/srs/publish;
on_unpublish http://host.docker.internal:8888/srs/un_publish;
on_play http://host.docker.internal:8888/srs/play;
on_stop http://host.docker.internal:8888/srs/stop;
}
}
這樣配置時,就可以正常拉取webrtc的視頻流了。文章來源地址http://www.zghlxwxcb.cn/news/detail-636619.html
到了這里,關(guān)于SRS視頻媒體服務(wù)器-docker啟動:更換默認端口時的錯誤的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!