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

  1. #user nobody;
  2. # multiple workers works !
  3. worker_processes 2;
  4.  
  5. #error_log logs/error.log;
  6. #error_log logs/error.log notice;
  7. #error_log logs/error.log info;
  8.  
  9. #pid logs/nginx.pid;
  10.  
  11. events {
  12. worker_connections 8192;
  13. # max value 32768, nginx recycling connections+registry optimization =
  14. # this.value * 20 = max concurrent connections currently tested with one worker
  15. # C1000K should be possible depending there is enough ram/cpu power
  16. # multi_accept on;
  17. }
  18.  
  19. rtmp {
  20. server {
  21. listen 1935;
  22. chunk_size 4000;
  23. application live {
  24. live on;
  25. }
  26. }
  27. }
  28.  
  29. http {
  30. #include /nginx/conf/naxsi_core.rules;
  31. include mime.types;
  32. default_type application/octet-stream;
  33.  
  34. #log_format main '$remote_addr:$remote_port - $remote_user [$time_local] "$request" '
  35. # '$status $body_bytes_sent "$http_referer" '
  36. # '"$http_user_agent" "$http_x_forwarded_for"';
  37.  
  38. #access_log logs/access.log main;
  39.  
  40. # # loadbalancing PHP
  41. # upstream myLoadBalancer {
  42. # server 127.0.0.1:9001 weight=1 fail_timeout=5;
  43. # server 127.0.0.1:9002 weight=1 fail_timeout=5;
  44. # server 127.0.0.1:9003 weight=1 fail_timeout=5;
  45. # server 127.0.0.1:9004 weight=1 fail_timeout=5;
  46. # server 127.0.0.1:9005 weight=1 fail_timeout=5;
  47. # server 127.0.0.1:9006 weight=1 fail_timeout=5;
  48. # server 127.0.0.1:9007 weight=1 fail_timeout=5;
  49. # server 127.0.0.1:9008 weight=1 fail_timeout=5;
  50. # server 127.0.0.1:9009 weight=1 fail_timeout=5;
  51. # server 127.0.0.1:9010 weight=1 fail_timeout=5;
  52. # least_conn;
  53. # }
  54.  
  55. sendfile off;
  56. #tcp_nopush on;
  57.  
  58. server_names_hash_bucket_size 128;
  59.  
  60. ## Start: Timeouts ##
  61. client_body_timeout 10;
  62. client_header_timeout 10;
  63. keepalive_timeout 30;
  64. send_timeout 10;
  65. keepalive_requests 10;
  66. ## End: Timeouts ##
  67.  
  68. #gzip on;
  69.  
  70. server {
  71. listen 8800;
  72. server_name localhost;
  73.  
  74. location /stat {
  75. rtmp_stat all;
  76. rtmp_stat_stylesheet stat.xsl;
  77. }
  78. location /stat.xsl {
  79. root nginx-rtmp-module/;
  80. }
  81. location /control {
  82. rtmp_control all;
  83. }
  84.  
  85. #charset koi8-r;
  86. #access_log logs/host.access.log main;
  87.  
  88. ## Caching Static Files, put before first location
  89. #location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
  90. # expires 14d;
  91. # add_header Vary Accept-Encoding;
  92. #}
  93.  
  94. # For Naxsi remove the single # line for learn mode, or the ## lines for full WAF mode
  95. location / {
  96. #include /nginx/conf/mysite.rules; # see also http block naxsi include line
  97. ##SecRulesEnabled;
  98. ##DeniedUrl "/RequestDenied";
  99. ##CheckRule "$SQL >= 8" BLOCK;
  100. ##CheckRule "$RFI >= 8" BLOCK;
  101. ##CheckRule "$TRAVERSAL >= 4" BLOCK;
  102. ##CheckRule "$XSS >= 8" BLOCK;
  103. root html;
  104. index index.html index.htm;
  105. }
  106.  
  107. # For Naxsi remove the ## lines for full WAF mode, redirect location block used by naxsi
  108. ##location /RequestDenied {
  109. ## return 412;
  110. ##}
  111.  
  112. ## Lua examples !
  113. # location /robots.txt {
  114. # rewrite_by_lua '
  115. # if ngx.var.http_host ~= "localhost" then
  116. # return ngx.exec("/robots_disallow.txt");
  117. # end
  118. # ';
  119. # }
  120.  
  121. #error_page 404 /404.html;
  122.  
  123. # redirect server error pages to the static page /50x.html
  124. #
  125. error_page 500 502 503 504 /50x.html;
  126. location = /50x.html {
  127. root html;
  128. }
  129.  
  130. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  131. #
  132. #location ~ \.php$ {
  133. # proxy_pass http://127.0.0.1;
  134. #}
  135.  
  136. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  137. #
  138. #location ~ \.php$ {
  139. # root html;
  140. # fastcgi_pass 127.0.0.1:9000; # single backend process
  141. # fastcgi_pass myLoadBalancer; # or multiple, see example above
  142. # fastcgi_index index.php;
  143. # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  144. # include fastcgi_params;
  145. #}
  146.  
  147. # deny access to .htaccess files, if Apache's document root
  148. # concurs with nginx's one
  149. #
  150. #location ~ /\.ht {
  151. # deny all;
  152. #}
  153. }
  154.  
  155. # another virtual host using mix of IP-, name-, and port-based configuration
  156. #
  157. #server {
  158. # listen 8000;
  159. # listen somename:8080;
  160. # server_name somename alias another.alias;
  161.  
  162. # location / {
  163. # root html;
  164. # index index.html index.htm;
  165. # }
  166. #}
  167.  
  168. # HTTPS server
  169. #
  170. #server {
  171. # listen 443 ssl spdy;
  172. # server_name localhost;
  173.  
  174. # ssl on;
  175. # ssl_certificate cert.pem;
  176. # ssl_certificate_key cert.key;
  177. # ssl_session_timeout 5m;
  178. # ssl_prefer_server_ciphers On;
  179. # ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  180. # ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!eNULL:!MD5:!DSS:!EXP:!ADH:!LOW:!MEDIUM;
  181.  
  182. # location / {
  183. # root html;
  184. # index index.html index.htm;
  185. # }
  186. #}
  187. }

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服务器的更多相关文章

  1. Mac搭建nginx+rtmp服务器

    nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 一.安装Homebrow 已经安装了brow的可以直接跳过这 ...

  2. Centos7 搭建Nginx+rtmp+hls直播推流服务器

    1 准备工具 使用yum安装git [root~]# yum -y install git 下载nginx-rtmp-module,官方github地址 // 通过git clone 的方式下载到服务 ...

  3. Mac使用nginx+rtmp服务器

    一.安装Homebrow 已经安装了brow的可以直接跳过这一步.执行命令 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/H ...

  4. Windows下搭建Nginx图片服务器

    在项目最开始,上传图片的时候,服务器先保存原图再使用ImageMagick生成上传图片缩略图,这种方法有很多缺点,例如生成的缩略图的大小是固定的,不能动态请求指定大小的缩略图. 虽然有非常多的图片云存 ...

  5. 三、直播整体流程 五、搭建Nginx+Rtmp直播流服务

    HTML5实现视频直播功能思路详解_html5教程技巧_脚本之家 https://m.jb51.net/html5/587215.html 三.直播整体流程 直播整体流程大致可分为: 视频采集端:可以 ...

  6. 搭建Nginx图片服务器

    搭建Nginx图片服务器 Part-I 安装Nginx 安装PCRE 下载 ngx_cache_purge 并解压,用来清除缓存 下载Nginx并解压 cd nginx-1.7.7 编译,--pref ...

  7. 第一次项目上Linux服务器(八:——搭建Nginx图片服务器)

    一.准备工作 安装Nginx,参考历史博客 二.搭建Nginx图片服务器 1.效果 例如:图片通过xftp服务上传到/home/java/upload目录下,我想通过访问Nginx服务器来访问xftp ...

  8. 【图片服务器】搭建Nginx图片服务器

    一.安装Nginx 二.安装vsftpd 三.开始搭建Nginx图片服务器 1.效果 例如:图片通过ftp服务上传到/home/ftpuser/www/images目录下,我想通过访问Nginx服务器 ...

  9. Android中直播视频技术探究之---视频直播服务端环境搭建(Nginx+RTMP)

    一.前言 前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端, ...

随机推荐

  1. 让Linux中的Nginx支持中文文件名

    原文:https://blog.csdn.net/soeben/article/details/79525964 首先你的服务器需要安装了UTF-8字符集在命令行里输入env|grep LANG如果显 ...

  2. 重复的DNA序列[哈希表] LeetCode.187

    所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:"ACGAATTCCG".在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助. 编写一个函数 ...

  3. 转:宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口(二)

    Posted on 2011-01-13 20:44 一桶浆糊 这是上一篇博客<宏定义的极致发挥---让你的普通C++类轻松支持IDispatch自动化接口>所展示的示例代码的改进版,改进 ...

  4. TensorFlow Lite for Android示例

    一.TensorFlow  Lite TensorFlow Lite 是用于移动设备和嵌入式设备的轻量级解决方案.TensorFlow Lite 支持 Android.iOS 甚至树莓派等多种平台. ...

  5. 【java】定时任务@Scheduled

    每隔5秒执行一次:"*/5 * * * * ?" 每隔1分钟执行一次:"0 */1 * * * ?" 每天23点执行一次:"0 0 23 * * ?& ...

  6. 【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 ...

  7. Pandas | 21 日期功能

    日期功能扩展了时间序列,在财务数据分析中起主要作用.在处理日期数据的同时,我们经常会遇到以下情况 - 生成日期序列 将日期序列转换为不同的频率 创建一个日期范围 通过指定周期和频率,使用date.ra ...

  8. ERP(Enterprise Resource Planning,企业资源计划)

    企业资源计划或称企业资源规划简称ERP(Enterprise Resource Planning),由美国著名管理咨询公司Gartner Group Inc.于1990年提出来的,最初被定义为应用软件 ...

  9. ESA2GJK1DH1K基础篇: 购买云服务器

    我选择的是购买阿里云的服务器 如果是学生,可以选择 因为我用学生账户买过了,所以过程没法写了,下面我就写不用学生账户买的过程,其实应该配置过程和学生买差不多 选择购买的配置 选择系统 不需要配置直接下 ...

  10. selenium--获取HTML源码断言和URL地址

    获取HTML源码 from selenium import webdriver import unittest class Test_source(unittest.TestCase): def Te ...