win7 下基于nginx和ffmpeg的rtmp流媒体服务器搭建-程序员宅基地

技术标签: 运维  操作系统  ffmpeg  

前提:

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

准备条件

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

  • ffmpeg 密码:eha3

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

  • vlc播放器 密码:3yjf

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

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

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

    PS:下图是nginx配置文件,如果没有需要自己手动创建

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

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

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

__注意:__里面的里面的两个视频文件是我添加进去的,没有什么作用。 将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
    复制代码

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

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

解释:

  • 1、myapp为application的名字,由nginx的conf中定义
  • 2、pc为直播流的名字,由推送方定义
  • 2、ffmpeg播放视频文件 切换到保存视频文件的路径下,我这里是在nginx路径下,如下图所示:

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34259232/article/details/88029809

智能推荐

Docker学习05:网络管理_容器和宿主机共享network namespace 什么意思-程序员宅基地

文章浏览阅读273次。一、Docker 网络模式host 模式: 容器和宿主机共享 network namespacecontainer 模式: 容器和另外一个容器共享 Network namespacenone 模式: 该模式关闭了容器的网络功能bridge 模式: 该模式会为每一个容器分配IP,并将容器连接到一个docker 0的虚拟网桥上(默认模式)二、bridge 模式2.1 bridge 介绍当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥。此主机上启动Docker容器会连_容器和宿主机共享network namespace 什么意思

TextView 属性大全_textview属性-程序员宅基地

文章浏览阅读640次。今天研究了TextView一天了,发现网上有一篇讲TextView属性的,非常全,收藏一下先。发现TextView有一个比较大的问题,就是文字排版的问题,遇到数字,字母,符号等就会有问题,目前还没有什么解决方法。如果有高人研究出方法来解决,请指教一下哈。android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/_textview属性

Chrome NET::ERR_CERT_AUTHORITY_INVALID错误解决方案_chrome net:err_cert_invalid-程序员宅基地

文章浏览阅读8.4k次,点赞3次,收藏4次。目录1.问题现象Chrome NET::ERR_CERT_AUTHORITY_INVALID2.解决方案1.问题现象 Chrome NET::ERR_CERT_AUTHORITY_INVALID 2.解决方案按步骤操作设置后,重启浏览器,打开设置过的chromestep1:开始step2:输入 chromestep3:鼠标悬停在chrome上ste..._chrome net:err_cert_invalid

使用lrucache和diskLrucache实现照片墙_lrucache和disklrucached的照片墙-程序员宅基地

文章浏览阅读1.2k次。其实,在真正的项目实战当中如果仅仅是使用硬盘缓存的话,程序是有明显短板的。而如果只使用内存缓存的话,程序当然也会有很大的缺陷。因此,一个优秀的程序必然会将内存缓存和硬盘缓存结合到一起使用,那么本篇文章我们就来看一看,如何才能将LruCache和DiskLruCache完美结合到一起。在 Android照片墙应用实现,再多的图片也不怕崩溃 这篇文章当中,我编写了一个照片墙的应用程序,但当时只_lrucache和disklrucached的照片墙

vue获取屏幕高度赋值给div与获取div本身的高度_vue给div赋值高度-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏8次。html:<div id="industrySectorScroll" :style="{ height: screenHeight + 'px' }"></div>js: export default { name: "industrySectorScroll", data() { return { screenWeight: 0, // 屏幕宽度 screenHeight: 0, // 屏幕高度 _vue给div赋值高度

java语言和C语言的区别_java和c的区别-程序员宅基地

文章浏览阅读2.6w次,点赞17次,收藏49次。简单的说就是两种不同的语言.但是它们之间既有联系又有区别_java和c的区别

随便推点

瑞芯微rockchip PX30触摸屏调试记录_rockchip weston-程序员宅基地

文章浏览阅读1.1k次。PX30触摸屏调试记录_rockchip weston

树莓派用户管理_树莓派 pi 查看 用户组-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏6次。树莓派的用户管理需要在命令行终端上处理。默认的用户名是pi,密码为raspberry。你可以添加用户并修改每一个用户的密码。1、CHANGE YOUR PASSWORD(修改你的密码)当你使用pi用户登录之后,你可以使用passwd命令修改你的密码。在命令行中输入passwd,然后按回车。命令行终端会提示你输入当前的密码进行验证,验证通过后会要求你输入新的密码。输完按回车完_树莓派 pi 查看 用户组

软件测试知识点和面试题--UI自动化篇_uiautomator自动化测试面试题-程序员宅基地

文章浏览阅读2k次。主流自动化测试框架介绍软件测试的自动化一般可以分为3层 * 代码层的单元测试 * 接口层的集成测试 * UI 层的测试1)代码层自动化代码层的自动化一般指针对代码进行的单元测试,比较常用的单元测试框架比如Java的Junit, Python的PyUnit等等,由于这部分并非本教程重点,这里就不详细展开,需要的同学可以自行学习。2)接口层自动化接口层的自动化测试主要是对系统和组建之间的接口进行测试,主要目标是校验数据的交换和业务的流程,接口测试可以测试功能、也可以测试性能、测试压力、测试安_uiautomator自动化测试面试题

libreCAD无法显示文本的问题及解决_libre cad字体设置-程序员宅基地

文章浏览阅读4.1k次。最近试用libreCAD,出现了一个小问题。用libreCAD绘制一幅图纸,保存为test.dxf。操作系统为win10, libreCAD的安装文件是:LibreCAD-Installer-2.2.0-rc1.exe过了两天,将libreCAD的界面语言切换成简体中文,再次打开test.dxf时,发现原本显示的文本内容都变成了一个矩形的空白方框。尝试将界面换回英文还是无法解决问题。设置文..._libre cad字体设置

hdu 一百题_hdu100题-程序员宅基地

文章浏览阅读554次。HDU一百题刷题笔记题号2003如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入题号开始刷杭电2000到2100一百题。比较基础。2003求绝对值 ,fabs表示求浮点数,abs返回整..._hdu100题

#e1.3 Fibonacci_Sequence-程序员宅基地

文章浏览阅读192次。#e1.3 Fibonacci_Sequence#coding = utf8"""书上正常内容"""a,b=0,1while a<1000: print(a,end='、') a,b=b,a+bprint()"""改进版,最后输出句号"""a,b=0,1print(a,end='')while b<1000: print('、'+str(b...

推荐文章

热门文章

相关标签