虚拟机安装SRS实时视频流媒体服务器,imx6ull 推流ov5640
SRS 对比 Nginx-RTMPSRS 的架构更现代在功能和性能上都远超 Nginx-RTMP特别是原生支持了 RTMP 推流、HTTP-FLV 拉流、HLS 拉流、WebRTC 超低延迟拉流、SRT 推流 等协议并提供了完善的 API。不需要像 Nginx 那样到处找第三方模块打补丁。推流端 (RTMP) - SRS 集群 - 拉流端 (HTTP-FLV)这就是目前国内 90% 以上泛娱乐直播、电商直播、监控流转发的标准架构。HTTP-FLV 凭借极低延迟和浏览器原生支持。今天要做的是虚拟机 用 Docker 部署 SRS imx6ull 开发板推流用 RTMP拉流用 HTTP-FLV。第一步安装 Docker如果还没装的话在 Ubuntu 虚拟机上执行更新源sudo apt update安装 dockersudo apt install docker.io -y启动 docker 并设为开机自启sudo systemctl start dockersudo systemctl enable docker把当前用户加入 docker 组这样以后不用每次敲 sudosudo usermod -aG docker $USER注意执行完 usermod 后需要退出当前终端重新登录或者执行 newgrp docker 让权限生效。第二步一键启动 SRS 服务器如果虚拟机在运行Nginx-RTMP占用的端口也是1935需要停止 Nginx-RTMP避免冲突。sudo systemctl stop nginx然后运行 SRS 容器端口就空出来了。直接拉取并运行 SRS 官方镜像我们用稳定的 5.0 版本, 这里需要访问外网docker run -d \--name srs \-p 1935:1935 \-p 8080:8080 \-p 1985:1985 \ossrs/srs:51935RTMP 推流/拉流端口8080HTTP-FLV 拉流端口 内置网页播放器端口1985SRS API 端口如果停止 Nginx-RTMP 后运行 SRS 容器遇到的问题是Docker容器名称冲突需要先删除旧的srs容器才能重新创建。删除 旧的srs容器 命令 docker rm srs验证 SRS 是否启动成功在虚拟机浏览器里访问http://127.0.0.1:8080如果能看到 SRS 的欢迎页面说明启动完美imx6ull 开发板 输入RTMP 推流命令 前两篇文章有讲解启动推流后在虚拟机验证推流是否成功方法 1在虚拟机终端输入 docker logs -f srs如果看到类似 stream started: live/test 的日志说明推流成功。方法 2用 ffplay 拉取 RTMP 流播放快速验证方法 3用 HTTP-FLV 拉流在虚拟机或同局域网电脑的浏览器中打开http://192.168.137.199:8080/players/srs_player.html在播放地址栏输入http://192.168.137.199:8080/live/test.flv点击 Play 播放画面。192.168.137.199 是虚拟机的ip停止 SRS 服务器 的命令docker stop srs