# srs-docker-srt **Repository Path**: stormbirds/srs-docker-srt ## Basic Information - **Project Name**: srs-docker-srt - **Description**: docker构建支持srt的srs镜像 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-03 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # srs-docker-srt #### 介绍 由于SRS官网没有提供支持SRT的镜像,所以修改官方的Dockerfile,构建出支持SRT的SRS镜像,并使用Docker-Compose启动SRS服务,也可以使用我编译好的镜像,地址如下: ``` shell docker pull registry.cn-beijing.aliyuncs.com/mawenwu1983/srs-srt:v4.0.107 ``` #### 1.编写Dockerfile ``` shell cat > Dockerfile << "EOF" # https://docs.docker.com/engine/reference/builder/#arg # @remark Please never modify it, the auto/release.sh will update it automatically. ARG tag=v4.0.107 ARG url=https://gitee.com/ossrs/srs.git ARG srt=https://gitee.com/mawenwu1983/srt ############################################################ # build ############################################################ ARG repo=registry.cn-hangzhou.aliyuncs.com/ossrs/srs:dev FROM ${repo} AS build ARG tag ARG url ARG srt # Install required tools. RUN yum install -y gcc make gcc-c++ patch unzip perl git tcl cmake openssl-devel RUN cd /tmp && git clone ${srt} RUN cd /tmp/srt && ./configure && make && make install RUN cd /tmp && git clone --depth=1 --branch ${tag} ${url} srs RUN cd /tmp/srs/trunk && ./configure --with-srt --use-sys-ssl && make && make install # The default index.html and srs-console. RUN cp /tmp/srs/trunk/research/api-server/static-dir/index.html /usr/local/srs/objs/nginx/html/ RUN cp /tmp/srs/trunk/research/api-server/static-dir/favicon.ico /usr/local/srs/objs/nginx/html/ RUN cp /tmp/srs/trunk/research/api-server/static-dir/crossdomain.xml /usr/local/srs/objs/nginx/html/ RUN cp -R /tmp/srs/trunk/research/console /usr/local/srs/objs/nginx/html/ RUN cp -R /tmp/srs/trunk/research/players /usr/local/srs/objs/nginx/html/ RUN cp -R /tmp/srs/trunk/3rdparty/signaling/www/demos /usr/local/srs/objs/nginx/html/ ############################################################ # dist ############################################################ FROM centos:7.9.2009 AS dist # RTMP/1935, API/1985, HTTP/8080, RTC/8000, SRT/10080 EXPOSE 1935 1985 8080 8000 10080 # FFMPEG 4.1 COPY --from=build /usr/local/bin/ffmpeg /usr/local/srs/objs/ffmpeg/bin/ffmpeg # SRS binary, config files and srs-console. COPY --from=build /usr/local/srs /usr/local/srs # Default workdir and command. WORKDIR /usr/local/srs CMD ["./objs/srs", "-c", "conf/srt.conf"] EOF ``` #### 2.构建镜像 ``` shell cat > build-srs.sh << EOF docker build -t srs-srt:v4.0.107 . EOF sh build-srs.sh ``` #### 3.编写docker-compose.yaml ``` shell cat > conf/srt.conf << EOF version: '3' services: srs-srt: container_name: srs-srt environment: CANDIDATE: 192.168.1.150 TZ: Asia/Shanghai image: srs-srt:v4.0.107 ports: - 1935:1935/tcp - 1985:1985/tcp - 8080:8080/tcp - 8000:8000/udp - 10080:10080/udp restart: always volumes: - ./video:/usr/local/srs/objs/nginx/html/live:rw - ./logs:/usr/local/srs/objs/logs:rw - ./conf/srt.conf:/usr/local/srs/conf/srt.conf:rw EOF ``` #### 4.编写srt.conf ``` shell mkdir conf cat > conf/srt.conf << "EOF" listen 1935; max_connections 1000; daemon off; srs_log_tank file; srs_log_file ./objs/logs/srs.log; disable_daemon_for_docker on; auto_reload_for_docker on; http_api { enabled on; listen 1985; crossdomain on; raw_api { enabled on; allow_reload on; allow_query on; allow_update on; } # https { # enabled on; # listen 1990; # key ./conf/server.key; # cert ./conf/server.crt; # } } http_server { enabled on; listen 8080; dir ./objs/nginx/html; crossdomain on; # https { # enabled on; # listen 8088; # key ./conf/server.key; # cert ./conf/server.crt; # } } rtc_server { enabled on; listen 8000; candidate 192.168.1.150; } srt_server { enabled on; listen 10080; maxbw 1000000000; connect_timeout 4000; peerlatency 300; recvlatency 300; } stats { network 0; disk sda sdb xvda xvdb; } vhost __defaultVhost__ { tcp_nodelay on; min_latency on; play { gop_cache off; queue_length 10; mw_latency 100; } publish { mr off; } rtc { enabled on; bframe discard; aac discard; } hls { enabled on; # hls_fragment 1; # hls_window 1; hls_fragment 10; hls_window 60; hls_path ./objs/nginx/html; hls_m3u8_file [app]/[stream].m3u8; hls_ts_file [app]/[stream]-[seq].ts; # hls_ts_file [app]/[stream]/[stream]-[seq].ts; } http_remux { enabled on; mount [vhost]/[app]/[stream].flv; # mount [app]/[stream].flv; } dvr { enabled on; dvr_apply none; dvr_plan session; dvr_path ./objs/nginx/html/[app]/[stream].[2006].[01].[02].[15].[04].[05].mp4; # dvr_path ./objs/nginx/html/[app]/[stream].[2006].[01].[02].[15].[04].[05].mp4; # dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].mp4; # dvr_path ./objs/nginx/html/[app]/[stream]/[15][04][05].flv; } http_hooks { enabled off; on_dvr http://127.0.0.1:19089/srs; # on_connect http://127.0.0.1:19089/srs; # on_close http://127.0.0.1:19089/srs; # on_publish http://127.0.0.1:19089/srs; # on_play http://127.0.0.1:19089/srs; # on_stop http://127.0.0.1:19089/srs; } # transcode { # enabled on; # ffmpeg ./objs/ffmpeg/bin/ffmpeg; # engine sd { # enabled on; # vfilter { # } # vcodec libx264; # vbitrate 500; # vfps 25; # vwidth 1024; # vheight 576; # vthreads 12; # vprofile main; # vpreset medium; # vparams { # } # acodec copy; # aparams { # } # output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; # } # } } EOF ``` #### 5.启动服务 ``` shell docker-compose up -d && tail -500f logs/srs.log ```