环境
开发环境:windows
开发工具:ffmpeg、nginx、nginx-rmtp-module、vlc media player
Nginx
Nginx是一个高性能的HTTP和反向代理web服务器,并且支持rtmp,不过rtmp是作为一个nginx的一个模块。
对于linux系统,需要另外编译安装rtmp模块;
而对于windown系统有带rtmp的nginx的版本。
下载Nginx-rtmp-win64
Nginx github地址
修改配置文件(conf/nginx.conf)
rtmp {
server {
listen 1935;
application live {
live on;
}
application hls {
live on;
hls on;
hls_path temp/hls;
hls_fragment 8s;
}
}
}
这里的配置参数及其含义listen
代表监听端口application live
跟的是推流请求路径live on
代表开启实时hls on
代表开启hlshls_path
代表rtmp推流请求路径,文件存放路径hls_fragment 8s
代表每个TS文件包含8秒的视频内容
修改server端口号
修改完成后保存,使用以下命令检查一下配置文件是否正确,后面是nginx.conf文件的路径,successful就说明正确了
nginx -t -c /nginx/conf/nginx.conf
代表运行成功
关闭 nginx 指令
taskkill /f /t /im nginx.exe
如果程序没启动就直接start nginx启动,如果已经启动了就使用以下命令重新加载配置文件并重启
nginx -s reload
之后就打开浏览器访问刚才的域名及端口http://localhost:8800,或者http://127.0.0.1:8800出现欢迎页就说明部署成功了
前面下载也可以下载下面版本:
windows版nginx下载地址:Index of /download/
我是下载后并在C盘建一个目录如下:
ffmpeg
- ffmpeg version 5.1.2 (可用最新的) 下载地址 Builds - CODEX FFMPEG @ gyan.dev
FFmpeg官方下载地址
下载后解压,进入bin目录下:
然后在文件夹下打开cmd命令:
推流:
.\ffmpeg.exe -thread_queue_size 1000 -r 30 -f dshow -i video='FULL HD 1080P Webcam' -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -max_delay 10 -g 50 -sc_threshold 0 -f flv rtmp://127.0.0.1:1935/live/home
拉流:
.\ffplay.exe -fflags nobuffer rtmp://127.0.0.1:1935/live/home
摄像头推流测试命令
摄像头推流
ffmpeg -f dshow -i video="USB2.0 PC CAMERA" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/home
麦克风推流
ffmpeg -f dshow -i audio="麦克风 (2- USB2.0 MIC)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123
摄像头&麦克风推流
ffmpeg -f dshow -i video="USB2.0 PC CAMERA" -f dshow -i audio="麦克风 (2- USB2.0 MIC)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123
或者
ffmpeg -f dshow -i video="USB2.0 PC CAMERA":audio="麦克风 (2- USB2.0 MIC)" -vcodec libx264 -r 25 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123
屏幕推流
首先需要安装一个软件,screen capture recorder
编译好的下载地址是:http://sourceforge.net
屏幕推流
ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/home
屏幕&麦克风推流
ffmpeg -f gdigrab -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://127.0.0.1:1935/rtmplive/home
屏幕&麦克风&摄像头
ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/rtmplive/home
或者用VLC查看效果
将转换的 rtmp://127.0.0.1/live/xxx 复制到如下所示:
参考链接:windows系统下利用Nginx搭建rtmp流媒体服务器_nginx rtmp-CSDN博客
Windows 搭建 nginx rtmp服务器 - microsoftzhcn - 博客园 (cnblogs.com)
https://www.cnblogs.com/ni666/p/17953882