准备环境

  • nginx,反向代理服务器
  • nginx-rmtp-module,nginx的rtmp服务插件
  • ffmpeg-win64,windows版本的ffmpeg程序
  • vlc,专业的视频播放器
  • nginx在编译完成后,无法再动态添加其它模块,所以我们如果想添加nginx-rmtp-module,不能直接下载运行包,必须下载源代码自己编译
  • nginx一般在Linux下编译,windows下编译nginx并添加自定义组件很麻烦,所以一般都是用第三方编译好的nginx版本,即nginx-Gryphon,这个程序包含了许多常用的nginx模块,也包括rtmp

程序下载

建议大家直接从博客里面下载,网上的很多教程写得不够细,很多操作顺序是不对的,或者配置文件需要修改,这些都遗漏了,需要自己排查错误

我这个版本是我整理过的,不用配环境变量,不用改配置文件,也不用自己敲命令行,因为我已经把命令行写到bat文件里了,直接启动bat就行了

两个bat文件,一个是启动nginx-rtmp服务,一个是向rtmp服务器推mp4视频流

下载地址 => nginx+rtmp+ffmpeg+vlc.zip

启动环境

解压全部文件到任意目录

运行nginx/nginx-rtmp.bat,启动nginx-rtmp服务

运行ffmpeg/bin/push-rtmp.bat,向rtmp服务器推流

打开vlc.exe,播放rtmp://localhost:18005/live/home地址,即可看到视频

工作原理

到此为止,我们已经实现了一分钟搭建运行环境了

对于“不求甚解”的同学来说,下个文件,双击两下,就已经轻松达到了自己的目标了

对于想学得深点的同学,我们再来谈谈工作原理

当我们点击nginx-rtmp.bat,实际上执行了以下命令

nginx-rtmp -c conf\nginx-rtmp.conf

我们启动了nginx-rtmp主程序,同时以nginx-rtmp.conf作为启动时使用的配置文件

这个是第三方的nginx主程序,官方的主程序是nginx.exe,默认配置文件是nginx.conf

实际我们可以通过指令来指定nginx.exe使用哪个配置文件

我们也可以修改配置文件,指定自定义的服务端口,我们这里是以18004作为http服务端口,18005作为rtmp服务端口

当我们点击push-rtmp.bat,实际上执行了以下命令

ffmpeg -re -i orange.mp4 -vcodec libx264 -acodec aac -f flv rtmp://localhost:18005/live/home

我们调用了ffmpeg主程序,执行了推流指令,同时指定了推流文件,视频解码器,音频解码器,推流格式,推流地址

如果想推其它视频文件,或推到其它服务器,修改指令参数即可

注意rtmp地址最后的home这个路径,这个是可变的,它相当于一个直播房间号

推流的时候往哪个房间号推,看视频的时候去对应的房间号看就行了

比如我们的推流地址改成rtmp://localhost:18005/live/10086,那么播放的时候也使用rtmp://localhost:18005/live/10086就行了,通过这种方式,rtmp就可以实现多路视频同时推送

后话

下一篇我们要讲解Linux版本的

Windows版的只是一个傻瓜式的,别人编译好直接拿来用的服务,只是为了方便大家快速了解rtmp的运作方式

如果大家以后做的是专业的音视频开发,很多时候,都是需要自己去编译库,自己去定制模块的,而且大多时候是在Linux上编译和运行的,这个才是我们的学习重点

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐