软件准备:
-
nginx with rtmp_module(可通过nginx源码编译安装nginx_rtmp_module模块,也可直接使用已编译好的exe:https://github.com/illuspas/nginx-rtmp-win32)
-
ffmpeg:http://ffmpeg.org/
设置nginx配置文件:nginx.conf,其初始设置为:
worker_processes 1;
error_log logs/error.log info;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
application live {
live on;
}
application hls {
live on;
hls on;
hls_path temp/hls;
hls_fragment 8s;
}
}
}
http {
server {
listen 8080;
location / {
root html;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root html;
}
location /hls {
#server hls fragments
types{
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias temp/hls;
expires -1;
}
}
}
其默认监听1935端口,在cmd中运行nginx.exe即可启动服务
ffmpeg推送视频流
推送视频文件流
ffmpeg.exe -re -i your_video.mp4 -f flv rtmp://127.0.0.1:1935/live
-re
参数会降低ffmpeg对视频文件的推送速率,避免ffmpeg读取文件过快,-i表示输入源,后跟你的视频文件地址,-f强制限制格式为flv,最后添加推送流的服务地址,即nginx中配置的rtmp服务地址
上面的配置进行视频文件播放时,ffmpeg推送完整个文件后,程序会自动退出,也可设置循环推流:
ffmpeg.exe -re -stream_loop -1 -i your_video.mp4 -f flv rtmp://127.0.0.1:1935/live
这样,播放器会一直播放视频,不会停止,类似直播
推送实时视频流
以电脑摄像头为例,通过ffmpeg捕获设备实时视频,推送到ngixn的rtmp服务即可
ffmpeg.exe -f dshow -i video="Integrated Webcam" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live
-f dshow
表示从windows DirectShow input device设备采集多媒体流,-i表示输入,video表示视频采集源,设为电脑的摄像头名称(可在设备管理器中查看),-vcodec 调用编解码器,设置编码格式,此处设置为libx264,输出的视频流解码格式为H264,其他参数暂时也不懂,最后推送到rtmp服务地址即可
使用VLC(网络流播放器),输入网络串流地址(即rtmp服务地址,即可播放)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:windows下nginx配合ffmpeg推送视频流 - Python技术站