win7 下基于nginx和ffmpeg的rtmp流媒体服务器搭建

简介: 前提:最近公司要做直播方面的APP开发,刚接触到的时候是一脸懵逼状态,经过两天的采坑填坑终于搞懂了直播的流程,在此记录一下。一是怕自己忘记,另外一个是给其他人做一个参考吧。

前提:

最近公司要做直播方面的APP开发,刚接触到的时候是一脸懵逼状态,经过两天的采坑填坑终于搞懂了直播的流程,在此记录一下。一是怕自己忘记,另外一个是给其他人做一个参考吧。
ps:现在好多的文章千篇一律,不负责任的复制粘贴,让人摸不着头脑,并且话说的不够细致,让人很是头疼。

准备条件

  • nginx-rtmp-module(带rtmp模块)

  • ffmpeg 密码:eha3

  • screencapturer 密码:ypgz (是一个虚拟设备,在使用FFMpeg之前,需要安装)

  • vlc播放器 密码:3yjf

    首先 nginx-rtmp-module是nginx的一个组件,可以自己编译生成,也可以从网上下载。需要注意的是,从nginx官网上下载的版本是不带rtmp模块的,但您可以通过: http://nginx-win.ecsds.eu/找到包含rtmp组件的nginx版本,比如:nginx 1.7.8.1 Gryphon

然后,解压按下ctrl+R键输入cmd打开命令行窗口,切换到解压的路径下,输入nginx -V 查看 nginx版本,如下图所示表示成功:


img_30accad38a8b95d0a49a14d643ffc23d.png
查看nginx版本.png
  • conf 下的nginx.conf配置文件(如果没有需要自己新建)
    如下图所示路径:
    img_f126a96a3c4ff188f0809c70d272b5a9.png
    nginx配置文件路径.png

    PS:下图是nginx配置文件,如果没有需要自己手动创建
img_d5ccd55e6f4a1f760172e262e4b66e1e.png
nginx配置文件.png
  • nginx.conf的配置内容

      #将以下内容拷贝到conf/nginx.conf文件中。
    #nginx进程数,建议设置为等于CPU总核心数
    worker_processes  2;
    #工作模式与连接数上限
     events {
       worker_connections  8192;
     }
    
     rtmp_auto_push on;
    
    rtmp {
    server {
      listen 1935;
      application myapp {
          live on;
      }       
     }
    }
    
  • nginx启动方式

    img_b2c233093b026157c48299ac6951e4f9.png
    nginx启动方式.png

    如上图所示:切换到你的nginx安装路径下然后输入 start nginx即可启动
    注意: 启动也可以输入 nginx.exe -c conf\nginx-win-rtmp.conf,这种方法带来的问题是不能优雅退出,切记!
    然后打开任务管理器可以看到nginx进程已经启动,如下图所示:

img_05971e3be848c0e64f534c4284ebd721.png
nginx进程.png

其次,基于ffmpeg的推拉流测试

    ffmpeg是一个自由软件,它提供了一整套多媒体的解决方案,从采集、编码、转换、播放应有尽有。
在流媒体应用领域不借助 ffmpeg 的力量,就好比做 windows 程序而不用 Visual Studio ,做 iOSApp 
不用 XCode 一样,需要很大的勇气。
  • ffmpeg 安装
    解压ffmpeg到指定文件夹下,我这里是在D盘的ProgramFile下的ffmpeg路径,然后将ffmpeng的bin路径添加到系统的path路径下


    img_70e37cea11889960817d4a200ac4c9a4.png
    FFMPEGbin路径.png

注意:里面的里面的两个视频文件是我添加进去的,没有什么作用。
将D:\ProgramFile\ffmpg\ffmpeg-win64\bin 添加到环境变量的PATH后面,当然要根据你自己的安装路径配置环境变量。

  • 1、 ffmpeg实现录屏推流
    打开windows命令行在命令行下输入:

       ffmpeg -f gdigrab -i desktop -r 16 -vcodec h264 -acodec aac -f flv 
       rtmp://192.168.0.197/myapp/pc
    

注意: 这是一行命令行下的,没有空格,这里是方便你们查看。如下图所示,推流已经开始了。

img_f7d816fefb0161a64477d187c5349e14.png
ffmpeg推流.png

  • vlc串流配置
    打开vlc客户端,点击媒体,在下拉框选项中选中打开网络串流这一个选项,会弹出如下图所示的对话框,在对话框中填入刚才第二行连接( rtmp://192.168.0.197/myapp/pc)即可,当然我这个是在局域网下面的。
    img_2cbc095e1370fdd1dbdb4eb1b76e6e33.png
    vlcrtmp串流配置.png

解释:

  • 1、myapp为application的名字,由nginx的conf中定义

  • 2、pc为直播流的名字,由推送方定义

  • 2、ffmpeg播放视频文件
    切换到保存视频文件的路径下,我这里是在nginx路径下,如下图所示:


    img_828a588ecf3ce1f38eacf8fb42b9fd31.png
    ffmpeg视频文件.png

那么对应的命令就是这样写:

ffmpeg -re -i gdiOut.avi -vcodec libx264 -acodec aac -f flv 
rtmp://192.168.0.197:1935/myapp/home

解释:

  • 1、myapp为application的名字,由nginx的conf中定义
  • 2、home为直播流的名字,由推送方定义

最后

  经过两天的采坑不断尝试终于搞定了服务器这块,下来直播的还需要自己去努力完成了。我相信有志者事竟成,
一定会死磕到底,去解决那个难题。

致谢

第一讲:win7下快速搭建媒体服务器的方法
Nginx搭建RTMP推拉流服务器
另外推荐一个Android交流群493180098,如需转载请标明出处,谢谢。

相关文章
|
11天前
|
存储 编解码 应用服务中间件
使用Nginx搭建流媒体服务器
本文介绍了流媒体服务器的特性及各种流媒体传输协议的适用场景,并详细阐述了使用 nginx-http-flv-module 扩展Nginx作为流媒体服务器的详细步骤,并提供了在VLC,flv.js,hls.js下的流媒体拉流播放示例。
80 1
|
20天前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
37 4
|
3月前
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
121 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
3月前
|
应用服务中间件 nginx
一文搞定Nginx配置RTMP!
一文搞定Nginx配置RTMP!
166 3
|
4月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
4月前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
92 3
|
4月前
|
负载均衡 应用服务中间件 Apache
Nginx与Apache的终极对决:揭秘Web服务器界的“速度与激情”!你不可不知的性能霸主如何颠覆传统,震撼互联网的根基!
【8月更文挑战第13天】互联网技术发展中,Web服务器至关重要,Nginx与Apache是最广泛使用的两种。Apache历史悠久,但Nginx以轻量级和高性能脱颖而出。Nginx采用事件驱动架构,高效处理大量并发连接,而Apache使用进程驱动,高并发下资源消耗大。以餐厅为例,Nginx像大堂经理同时处理多个顾客需求,远比Apache为每位顾客分配服务员更高效。性能测试显示Nginx处理能力远超Apache。此外,Nginx配置简洁灵活,尤其在负载均衡方面表现突出。尽管Apache适合动态内容处理,但在快速变化的互联网环境中,Nginx因其独特优势成为许多开发者和企业的首选。
68 7
|
4月前
|
应用服务中间件 网络安全 nginx
运维专题.Docker+Nginx服务器的SSL证书安装
运维专题.Docker+Nginx服务器的SSL证书安装
166 3
|
4月前
|
应用服务中间件 Linux 网络安全
在Linux中,如何配置Apache或Nginx Web服务器?
在Linux中,如何配置Apache或Nginx Web服务器?
|
5月前
|
应用服务中间件 Linux nginx
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
《FFmpeg开发实战》书中介绍了如何使用FFmpeg向网络推流,简单流媒体服务器MediaMTX不适用于复杂业务。nginx-rtmp是Nginx的RTMP模块,提供基本流媒体服务。要在Linux上集成rtmp,需从官方下载nginx和nginx-rtmp-module源码,解压后在nginx目录配置并添加rtmp模块,编译安装。配置nginx.conf启用RTMP服务,监听1935端口。使用ffmpeg推流测试,如能通过VLC播放,表明nginx-rtmp运行正常。更多详情见书本。
135 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流