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,如需转载请标明出处,谢谢。

相关文章
|
1月前
|
编解码 移动开发 安全
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
自互联网普及以来,流媒体技术特别是视频直播技术不断进步,出现了多种传输协议。早期的MMS由微软主导,但随WMV格式衰落而减少使用。RTSP由网景和RealNetworks联合提出,支持多种格式,但在某些现代应用中不再受支持。RTMP由Adobe开发,曾广泛用于网络直播,但因HTML5不支持Flash而受影响。HLS由苹果开发,基于HTTP,适用于点播。SRT和RIST均为较新协议,强调安全与可靠性,尤其SRT在电视直播中应用增多。尽管RTMP仍占一定市场,但SRT等新协议正逐渐兴起。
75 8
FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生
|
4月前
|
网络协议 Shell Windows
搭建rtmp流媒体服务器的步骤
网络上很多问文章介绍使用ffmpeg推送和拉流,经常遗漏安装rtsp-simple-server的步骤,执行推流命令:
227 0
|
1月前
|
应用服务中间件 nginx
一文搞定Nginx配置RTMP!
一文搞定Nginx配置RTMP!
82 3
|
5月前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
3月前
|
应用服务中间件 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运行正常。更多详情见书本。
94 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
|
3月前
|
存储 编解码 应用服务中间件
|
2月前
|
JavaScript 前端开发 关系型数据库
Vue 开源项目:一款实用的个人音乐流媒体服务器,轻松打造属于自己的音乐天堂!!!
Vue 开源项目:一款实用的个人音乐流媒体服务器,轻松打造属于自己的音乐天堂!!!
|
3月前
|
存储
流媒体服务器与视频服务器有什么区别?
总的来说,流媒体服务器和视频服务器的主要区别在于,流媒体服务器更注重实时性和并发性,而视频服务器更注重存储和分发。
139 2
|
5月前
|
编解码
FFmpeg流媒体调试工具(六),软件开发项目经理面试题
FFmpeg流媒体调试工具(六),软件开发项目经理面试题
|
20小时前
阿里云国际版购买了服务器后如何下载发票?
阿里云国际版购买了服务器后如何下载发票?