9步实现 Docker部署 SRS rtmp/flv流媒体服务器

这篇具有很好参考价值的文章主要介绍了9步实现 Docker部署 SRS rtmp/flv流媒体服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这是基于centos7.6系统部署的

1、docker镜像用docker-hub官方的:

docker pull ossrs/srs:3

2、创建 bridge 网络并指定 IP 区间:

#创建自定义网络
docker network create --driver bridge --subnet 172.0.0.0/16 srs_network
 
#查看已存在网络
docker network ls

3、创建数据目录

# 创建数据目录
mkdir -p /home/docker/srs3

4、安装并启动SRS的容器

# 安装并启动 srs
docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
--name srs \
ossrs/srs:3

运行容器会直接停留在容器运行界面,通过Ctrl+P+Q可后台形式退出容器

docker部署srs,程序员,音视频开发,编程,docker,容器,运维,SRS流媒体服务器

这时候其实已经运行成功!可以通过以下命令查看SRS控制台

# SRS 控制台访问地址 IP 为服务器ip,
http://[IP]:8080

5、步骤四会安装在默认的位置,我们把它复制到步骤三创建的目录下

# 把容器中的配置文件复制出来
docker cp -a srs:/usr/local/srs/conf /home/docker/srs3/conf
​
# 把容器中的数据文件复制出来
docker cp -a srs:/usr/local/srs/objs /home/docker/srs3/objs
​
# 删除 srs 容器
docker rm -f srs

进入/home/docker/srs3 可查看配置文件是否复制成功

6、重新启动SRS(启动复制到/home/docker/srs3目录的SRS)

docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
--name srs \
--network srs_network \
--ip 172.0.0.35 \
--restart=always \
-v /home/docker/srs3/conf/:/usr/local/srs/conf/ \
-v /home/docker/srs3/objs/:/usr/local/srs/objs/ \
ossrs/srs:3

这是可能会报错:

docker: Error response from daemon: Conflict. The container name "/srs" is already in use by container "4fbdca724d84c1398b4c54cbe032dfc64baf84546f1c06d07014eec0249eeee6". You have to remove (or rename) that container to be able to reuse that name.

因为步骤四我们意见运行一个容器,已经使用过srs这个名字了,我们可以换一个名字,或者把刚才那个容器删除。

docker部署srs,程序员,音视频开发,编程,docker,容器,运维,SRS流媒体服务器

运行容器会直接停留在容器运行界面,通过Ctrl+P+Q可后台形式退出容器

【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

docker部署srs,程序员,音视频开发,编程,docker,容器,运维,SRS流媒体服务器

docker部署srs,程序员,音视频开发,编程,docker,容器,运维,SRS流媒体服务器

7、查看服务

# 查看srs服务是否启动成功
docker ps
​
--------
[root@qtouch-prd-test conf]# docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS          PORTS                                                                    NAMES
2b141ebf6cc8   ossrs/srs:3   "./objs/srs -c conf/…"   13 minutes ago   Up 13 minutes   0.0.0.0:1935->1935/tcp, 0.0.0.0:1985->1985/tcp, 0.0.0.0:8080->8080/tcp   srs

要想外网可以访问,需要打开1935、8080、1985 三个端口号(云服务安全组)

此时流服务器已经可以使用,如果需要自定义配置文件可继续按照下面步骤。

8、自定义配置文件(仅供参考:具体去看官方配置文档 https://github.com/ossrs/srs/wiki/v3_CN_Home)

再 /home/docker/srs3/conf 创建自己的配置文件 srs.my.conf

# SRS 参考配置
​
listen              1935;
max_connections     1000;
srs_log_tank        file;
srs_log_file        ./objs/srs.log;
daemon              on;
http_api {
    enabled         on;
    listen          1985;
}
http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
    # 开启 https 支持,需要开放 8088端口
    # https {
        # enabled on;
        # listen 8088;
        # key ./conf/xxxx.key;
        # cert ./conf/xxxx.crt;
    # }
}
vhost __defaultVhost__ {
    # http-flv设置
    http_remux{
        enabled    on;
        mount      [vhost]/[app]/[stream].flv;
        hstrs      on;
    }
 
    # hls设置
    hls {
        enabled         on;
        hls_fragment    1;
        hls_window      2;
        hls_path        ./objs/nginx/html;
        hls_m3u8_file   [app]/[stream].m3u8;
        hls_ts_file     [app]/[stream]-[seq].ts;
    }
    
    # dvr设置
    dvr {
        enabled             off;
        dvr_path            ./objs/nginx/html/[app]/[stream]/[2006]/[01]/[02]/[timestamp].flv;
        dvr_plan            segment;
        dvr_duration        30;
        dvr_wait_keyframe   on;
    }
    
    # rtc 设置
    rtc {
        enabled     on;
        bframe      discard;
    }
    
    # SRS支持refer防盗链:检查用户从哪个网站过来的。譬如不是从公司的页面过来的人都不让看。
    refer {
        # whether enable the refer hotlink-denial.
        # default: off.
        enabled         off;
        # the common refer for play and publish.
        # if the page url of client not in the refer, access denied.
        # if not specified this field, allow all.
        # default: not specified.
        all           github.com github.io;
        # refer for publish clients specified.
        # the common refer is not overrided by this.
        # if not specified this field, allow all.
        # default: not specified.
        publish   github.com github.io;
        # refer for play clients specified.
        # the common refer is not overrided by this.
        # if not specified this field, allow all.
        # default: not specified.
        play      github.com github.io;
    }
    
    # http 回调
    http_hooks {
    
        # 事件:发生该事件时,即回调指定的HTTP地址。
        # HTTP地址:可以支持多个,以空格分隔,SRS会依次回调这些接口。
        # 数据:SRS将数据POST到HTTP接口。
        # 返回值:SRS要求HTTP服务器返回HTTP200并且response内容为整数错误码(0表示成功),其他错误码会断开客户端连接。
        
        # whether the http hooks enable.
        # default off.
        enabled         on;
        
        # 当客户端连接到指定的vhost和app时
        on_connect      http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients;
        
        # 当客户端关闭连接,或者SRS主动关闭连接时
        on_close        http://127.0.0.1:8085/api/v1/clients http://localhost:8085/api/v1/clients;
       
        # 当客户端发布流时,譬如flash/FMLE方式推流到服务器
        on_publish      http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams;
        
        # 当客户端停止发布流时
        on_unpublish    http://127.0.0.1:8085/api/v1/streams http://localhost:8085/api/v1/streams;
        
        # 当客户端开始播放流时
        on_play         http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;
        
        # 当客户端停止播放时。备注:停止播放可能不会关闭连接,还能再继续播放。
        on_stop         http://127.0.0.1:8085/api/v1/sessions http://localhost:8085/api/v1/sessions;
        
        # 当DVR录制关闭一个flv文件时
        on_dvr          http://127.0.0.1:8085/api/v1/dvrs http://localhost:8085/api/v1/dvrs;
        
        # 当HLS生成一个ts文件时
        on_hls          http://127.0.0.1:8085/api/v1/hls http://localhost:8085/api/v1/hls;
        
        # when srs reap a ts file of hls, call this hook,
        on_hls_notify   http://127.0.0.1:8085/api/v1/hls/[app]/[stream]/[ts_url][param];
    }
}

9、通过自定义配置文件启动

docker run -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
--name srs \
--network src_network \
--ip 172.0.0.35 \
--restart=always \
-v /home/docker/srs3/conf/:/usr/local/srs/conf/ \
-v /home/docker/srs3/objs/:/usr/local/srs/objs/ \
ossrs/srs:3 \
./objs/srs -c conf/srs.my.conf

10、在自己电脑安装配置FFmpeg(步骤很简单,下载下来,配置个环境变量就行),把局域网的摄像头推流到云服务上部署的流媒体服务器

ffmpeg -i "rtsp://admin:sit123456@192.168.1.251:554/cam/realmonitor?channel=1&subtype=0" -g 25 -vcodec libx264  -preset:v ultrafast -tune:v zerolatency -c copy -f flv -y rtmp://[云服务ip]/live/livestream

使用vlc播放器播放

http://[云服务ip]:8080/live/livestream.flv

原文链接:https://www.cnblogs.com/getrich/p/15749431.html文章来源地址https://www.toymoban.com/news/detail-616084.html

到了这里,关于9步实现 Docker部署 SRS rtmp/flv流媒体服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包