美文网首页
win7 下基于nginx和ffmpeg的rtmp流媒体服务器搭

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

作者: Silence潇湘夜雨 | 来源:发表于2018-03-30 15:30 被阅读740次

    前提:

    最近公司要做直播方面的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版本,如下图所示表示成功:


    查看nginx版本.png
    • conf 下的nginx.conf配置文件(如果没有需要自己新建)
      如下图所示路径:
      nginx配置文件路径.png
      PS:下图是nginx配置文件,如果没有需要自己手动创建
    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启动方式

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

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

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


      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
      

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

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

    解释:

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

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

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


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

    相关文章

      网友评论

          本文标题:win7 下基于nginx和ffmpeg的rtmp流媒体服务器搭

          本文链接:https://www.haomeiwen.com/subject/jahicftx.html