实现流媒体直播
流媒体服务器,推流客户端,拉流客户端
硬件设施 centos7服务器,window拉流客户端
软件层面 dockers+nginx+rtmp模块
其他工具 git vlc
搭建rtmp服务器
这里是搭建服务器的环境
首先配置centos的环境
下载vmware
vmware的破解码
下载centos7的镜像
按照普通安装centos7的方式给一个1核2g运存20g内存的环境
配置centos7环境
更新系统到最新状态 sudo yum update
启用epel仓库 sudo yum install epel-release
配置语言环境 sudo yum install -y gcc-c++
make python-devel # 或其他特定版本的Python如python36-devel
防火墙设置 sudo firewall-cmd --permanent --add-port=80/tcp
安装dockers
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
启用docker并设置自动启动
sudo systemctl start docker
sudo systemctl enable docker
检查是否成功安装运行
docker --version
运行项目
安装git
sudo yum install git
git --version
开始克隆
git clone https://gitcode.com/tiangolo/nginx-rtmp-docker.git
然后进去到项目目录
cd nginx-rtmp-docker
使用docker启动监听,这里就已经运行了RTMP服务器,监听口在1935
docker run -d -p 1935:1935 --name=nginx-rtmp tiangolo/nginx-rtmp
推流服务端
安装ffmpeg推流
sudo apt-get updatesudo apt-get install ffmpeg
然后进到一个文件夹,文件夹内必须要有mp4文件,下一步要做的就是将这个文件转码推送到客户端
ffmpeg -re -i input.mp4 -c copy -f flv rtmp://localhost/live/stream
“input.mp4”是你的视频文件,“rtmp://localhost/live/stream”是你的RTMP服务器地址
现在的RTMP是自己服务器内
docker run -d -p 1935:1935 --name=nginx-rtmp
tiangolo/nginx-rtmp命令启动了一个名为"nginx-rtmp"的容器,它监听主机的1935端口。
ffmpeg -re -i input.mp4 -c copy -f flv
rtmp://localhost/live/stream命令将名为"input.mp4"的视频文件转换成流,然后推送到"rtmp://localhost/live/stream
ffmpeg是推流客户端,而nginx-rtmp容器是流媒体服务器,二者之间通过RTMP协议进行通信
sudo firewall-cmd --reload
到这一步推流客户端,流媒体服务器已经搭建完毕
拉流客户端
搭建流媒体服务器
搭建之前需要知道一个东西,这个时候推流服务器的ip地址是哪个
在centos7系统中,使用ip addr指令获取
会出来几条IP接口
io 环回接口,用在本机通讯
ens33 物理以太网接口
virbr0 虚拟网桥
docker0 Docker容器网络的虚拟网桥
这里需要用 ens33地址接口
然后在其他机器上测试这个接口是否能正常使用
在windows上使用ipconfig 地址
看是否有返回值
这里就确定是否可以正常使用
下一步,下载Vlc客户端作为拉流客户端
vlc下载地址:windows版
在推流服务器使用这个指令让客户端播放完视频一直循环播放
ffmpeg -re -stream_loop -1 -i forest4kTest.mp4 -c copy -f flv rtmp://192.168.121.50/live/stream
总结:
三个端串联,流媒体服务器,推流客户端,拉流客户端
参考原作者:https://blog.csdn.net/Dontla/article/details/135375042