nginx+nginx-rtmp-module构建流服务
GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server
./configure --add-module=/path/to/nginx-rtmp-module
make
make install
安装好之后,虚拟机ip:192.168.101.26,nginx.conf配置如下
rtmp {
server {
listen 1935;
chunk_size 4000;
# TV mode: one publisher, many subscribers
application mytv {
# enable live streaming
live on;
# record first 1K of stream
record all;
record_path /tmp/av;
record_max_size 1K;
# append current timestamp to each flv
record_unique on;
# publish only from localhost
allow publish all;
# deny publish all;
allow play all;
}
}
}
从一台有MP4视频的机器ip:113.10.10.10推流到192.168.101.26的机器上,推流路径为mytv/自定义一个名字(必须的)
使用ffmpeg 推到流服务上面
ffmpeg -re -i D:/img/panda.mp4 -vcodec copy -acodec copy -f flv rtmp://192.168.101.26:1935/mytv/abc
rtmp://192.168.101.26:1935/mytv/abc这个地址为nginx流服务的端口和路径,
打开vlc软件,选择播放流地址即可播放
也可以用ffplay接收rtmp并减少延时,本地ip:113.10.10.10接收rtmp流命令
ffplay.exe -i rtmp://192.168.101.26:1935/mytv/abc -fflags nobuffer
如果和113.10.10.10同网段的其他的机器,是无法访问到192.168.101.26的,那么就可以
nginx转发rtmp流,便于外网或是里一台服务器访问,nginx作为反向代理:
stream {
server {
listen 1935;
proxy_connect_timeout 10s;
proxy_timeout 15s;
proxy_pass 192.168.101.26:1935;
}
}
经过nginx再次反向代理后,ip:113.10.10.10同网段的机器便可以访问到rtmp流媒体了,
ffpaly命令:
ffplay.exe -i rtmp://113.10.10.10:1935/mytv/abc -fflags nobuffer