Windows 搭建 nginx rtmp服务器
1.环境
开发环境:windows
开发工具:ffmpeg、nginx、nginx-rmtp-module、vlc media player播放器
2.准备文件
官方ffmpeg下载地址:http://www.ffmpeg.org
官方nginx下载地址:http://nginx.org
官方nginx-rtmp-module下载地址:https://github.com/arut/nginx-rtmp-module
官方vlc media player下载地址:https://www.videolan.org/vlc
3.安装nginx和ffmpeg
在c盘根目录下创建两个目录,ffmpeg和nginx目录
把下载好的ffmpeg文件复制到c:\ffmpeg目录下
把下载好的nginx文件复制到c:\nginx目录下
把下载好的nginx文件复制到c:\nginx\nginx-rtmp-module目录下
4.配置FFmpeg
环境配置:右键我的电脑 》属性 》高级系统设置 》高级 》环境变量 》双击Path ,将 c:\ffmpeg添加到Path路径下
5.配置nginx文件
文件目录C:\nginx\conf\nginx.conf
- #user nobody;
- # multiple workers works !
- worker_processes 2;
- #error_log logs/error.log;
- #error_log logs/error.log notice;
- #error_log logs/error.log info;
- #pid logs/nginx.pid;
- events {
- worker_connections 8192;
- # max value 32768, nginx recycling connections+registry optimization =
- # this.value * 20 = max concurrent connections currently tested with one worker
- # C1000K should be possible depending there is enough ram/cpu power
- # multi_accept on;
- }
- rtmp {
- server {
- listen 1935;
- chunk_size 4000;
- application live {
- live on;
- }
- }
- }
- http {
- #include /nginx/conf/naxsi_core.rules;
- include mime.types;
- default_type application/octet-stream;
- #log_format main '$remote_addr:$remote_port - $remote_user [$time_local] "$request" '
- # '$status $body_bytes_sent "$http_referer" '
- # '"$http_user_agent" "$http_x_forwarded_for"';
- #access_log logs/access.log main;
- # # loadbalancing PHP
- # upstream myLoadBalancer {
- # server 127.0.0.1:9001 weight=1 fail_timeout=5;
- # server 127.0.0.1:9002 weight=1 fail_timeout=5;
- # server 127.0.0.1:9003 weight=1 fail_timeout=5;
- # server 127.0.0.1:9004 weight=1 fail_timeout=5;
- # server 127.0.0.1:9005 weight=1 fail_timeout=5;
- # server 127.0.0.1:9006 weight=1 fail_timeout=5;
- # server 127.0.0.1:9007 weight=1 fail_timeout=5;
- # server 127.0.0.1:9008 weight=1 fail_timeout=5;
- # server 127.0.0.1:9009 weight=1 fail_timeout=5;
- # server 127.0.0.1:9010 weight=1 fail_timeout=5;
- # least_conn;
- # }
- sendfile off;
- #tcp_nopush on;
- server_names_hash_bucket_size 128;
- ## Start: Timeouts ##
- client_body_timeout 10;
- client_header_timeout 10;
- keepalive_timeout 30;
- send_timeout 10;
- keepalive_requests 10;
- ## End: Timeouts ##
- #gzip on;
- server {
- listen 8800;
- server_name localhost;
- location /stat {
- rtmp_stat all;
- rtmp_stat_stylesheet stat.xsl;
- }
- location /stat.xsl {
- root nginx-rtmp-module/;
- }
- location /control {
- rtmp_control all;
- }
- #charset koi8-r;
- #access_log logs/host.access.log main;
- ## Caching Static Files, put before first location
- #location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
- # expires 14d;
- # add_header Vary Accept-Encoding;
- #}
- # For Naxsi remove the single # line for learn mode, or the ## lines for full WAF mode
- location / {
- #include /nginx/conf/mysite.rules; # see also http block naxsi include line
- ##SecRulesEnabled;
- ##DeniedUrl "/RequestDenied";
- ##CheckRule "$SQL >= 8" BLOCK;
- ##CheckRule "$RFI >= 8" BLOCK;
- ##CheckRule "$TRAVERSAL >= 4" BLOCK;
- ##CheckRule "$XSS >= 8" BLOCK;
- root html;
- index index.html index.htm;
- }
- # For Naxsi remove the ## lines for full WAF mode, redirect location block used by naxsi
- ##location /RequestDenied {
- ## return 412;
- ##}
- ## Lua examples !
- # location /robots.txt {
- # rewrite_by_lua '
- # if ngx.var.http_host ~= "localhost" then
- # return ngx.exec("/robots_disallow.txt");
- # end
- # ';
- # }
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
- # proxy the PHP scripts to Apache listening on 127.0.0.1:80
- #
- #location ~ \.php$ {
- # proxy_pass http://127.0.0.1;
- #}
- # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
- #
- #location ~ \.php$ {
- # root html;
- # fastcgi_pass 127.0.0.1:9000; # single backend process
- # fastcgi_pass myLoadBalancer; # or multiple, see example above
- # fastcgi_index index.php;
- # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- # include fastcgi_params;
- #}
- # deny access to .htaccess files, if Apache's document root
- # concurs with nginx's one
- #
- #location ~ /\.ht {
- # deny all;
- #}
- }
- # another virtual host using mix of IP-, name-, and port-based configuration
- #
- #server {
- # listen 8000;
- # listen somename:8080;
- # server_name somename alias another.alias;
- # location / {
- # root html;
- # index index.html index.htm;
- # }
- #}
- # HTTPS server
- #
- #server {
- # listen 443 ssl spdy;
- # server_name localhost;
- # ssl on;
- # ssl_certificate cert.pem;
- # ssl_certificate_key cert.key;
- # ssl_session_timeout 5m;
- # ssl_prefer_server_ciphers On;
- # ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- # ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!eNULL:!MD5:!DSS:!EXP:!ADH:!LOW:!MEDIUM;
- # location / {
- # root html;
- # index index.html index.htm;
- # }
- #}
- }
6.启动nginx
按住windows键+R,输入cmd,进入cmd命令窗口
进入nginx目录
cd c:\nginx
启动nginx
nginx.exe -c conf\nginx-win.conf
http 访问地址:http://127.0.0.1:8800
7.ffmpeg本地视频推流测试
ffmpeg 推流地址:rtmp://127.0.0.1:1935/live/home
ffmpeg推流测试:ffmpeg.exe -re -i c:\ffmpeg\inputfile.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/home
ffmpeg 拉流测试:ffplay.exe rtmp://localhost:1935/live/home
使用vlc media player播放器测试,输入网络URL: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
看直播
Windows 搭建 nginx rtmp服务器的更多相关文章
- Mac搭建nginx+rtmp服务器
nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 一.安装Homebrow 已经安装了brow的可以直接跳过这 ...
- Centos7 搭建Nginx+rtmp+hls直播推流服务器
1 准备工具 使用yum安装git [root~]# yum -y install git 下载nginx-rtmp-module,官方github地址 // 通过git clone 的方式下载到服务 ...
- Mac使用nginx+rtmp服务器
一.安装Homebrow 已经安装了brow的可以直接跳过这一步.执行命令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/H ...
- Windows下搭建Nginx图片服务器
在项目最开始,上传图片的时候,服务器先保存原图再使用ImageMagick生成上传图片缩略图,这种方法有很多缺点,例如生成的缩略图的大小是固定的,不能动态请求指定大小的缩略图. 虽然有非常多的图片云存 ...
- 三、直播整体流程 五、搭建Nginx+Rtmp直播流服务
HTML5实现视频直播功能思路详解_html5教程技巧_脚本之家 https://m.jb51.net/html5/587215.html 三.直播整体流程 直播整体流程大致可分为: 视频采集端:可以 ...
- 搭建Nginx图片服务器
搭建Nginx图片服务器 Part-I 安装Nginx 安装PCRE 下载 ngx_cache_purge 并解压,用来清除缓存 下载Nginx并解压 cd nginx-1.7.7 编译,--pref ...
- 第一次项目上Linux服务器(八:——搭建Nginx图片服务器)
一.准备工作 安装Nginx,参考历史博客 二.搭建Nginx图片服务器 1.效果 例如:图片通过xftp服务上传到/home/java/upload目录下,我想通过访问Nginx服务器来访问xftp ...
- 【图片服务器】搭建Nginx图片服务器
一.安装Nginx 二.安装vsftpd 三.开始搭建Nginx图片服务器 1.效果 例如:图片通过ftp服务上传到/home/ftpuser/www/images目录下,我想通过访问Nginx服务器 ...
- Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)
一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端, ...
随机推荐
- 让Linux中的Nginx支持中文文件名
原文:https://blog.csdn.net/soeben/article/details/79525964 首先你的服务器需要安装了UTF-8字符集在命令行里输入env|grep LANG如果显 ...
- 重复的DNA序列[哈希表] LeetCode.187
所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG".在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助. 编写一个函数 ...
- 转:宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口(二)
Posted on 2011-01-13 20:44 一桶浆糊 这是上一篇博客<宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口>所展示的示例代码的改进版,改进 ...
- TensorFlow Lite for Android示例
一.TensorFlow Lite TensorFlow Lite 是用于移动设备和嵌入式设备的轻量级解决方案.TensorFlow Lite 支持 Android.iOS 甚至树莓派等多种平台. ...
- 【java】定时任务@Scheduled
每隔5秒执行一次:"*/5 * * * * ?" 每隔1分钟执行一次:"0 */1 * * * ?" 每天23点执行一次:"0 0 23 * * ?& ...
- 【java异常】定时任务异常ERROR 20604 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
2019-11-20 13:20:00.006 ERROR 20604 --- [ scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unex ...
- Pandas | 21 日期功能
日期功能扩展了时间序列,在财务数据分析中起主要作用.在处理日期数据的同时,我们经常会遇到以下情况 - 生成日期序列 将日期序列转换为不同的频率 创建一个日期范围 通过指定周期和频率,使用date.ra ...
- ERP(Enterprise Resource Planning,企业资源计划)
企业资源计划或称企业资源规划简称ERP(Enterprise Resource Planning),由美国著名管理咨询公司Gartner Group Inc.于1990年提出来的,最初被定义为应用软件 ...
- ESA2GJK1DH1K基础篇: 购买云服务器
我选择的是购买阿里云的服务器 如果是学生,可以选择 因为我用学生账户买过了,所以过程没法写了,下面我就写不用学生账户买的过程,其实应该配置过程和学生买差不多 选择购买的配置 选择系统 不需要配置直接下 ...
- selenium--获取HTML源码断言和URL地址
获取HTML源码 from selenium import webdriver import unittest class Test_source(unittest.TestCase): def Te ...