一、什么是媒体服务器

媒体服务器这个名词最初来自于NGN(下一代网络),在软交换设备控制下提供IP网络上各种媒体资源管理功能,含视频、音频、图片、图文消息等等。

后来逐渐演化为流媒体服务器,从而提供以流的方式推送、存储、拉动媒体资源,尤其是实时和准实时的音视频资源。

应用领域包括视频直播、视频点播、短视频、视频会议、远程教育、远程医疗等。

著名的开源媒体服务器,包括Red5 ServerLive555EasyDarwinOpen Streaming ServerNginx+RTMP等。

二、什么是Nginx

当前(2020),web服务大量使用Nginx作为反向代理服务器。

Nginx最初由俄国人伊戈尔·赛索耶夫在2004年开发,采用BSD许可证。

除了反向代理外,Nginx还是一个轻量级web server,是Apache web server的替代者,并发连接数可以达到5万以上。

另外,Nginx还能被用来搭建负荷均衡服务器和邮件代理服务器。

更主要的是,nginx配合RTMP插件能够适应直播潮流,成为性能优良的流媒体服务器。

 

三、Windows下编译nginx

1,官网下载地址:http://nginx.org/en/download.html,需要下载源代码自行编译。

2,现成的编译好的发布版本:

http://nginx-win.ecsds.eu/download/nginx%201.7.11.3%20Gryphon.zip

解压后放到D:\nginx-1.7.11.3-Gryphon

image.png

3,启动:双击启动或者在cmd下输入start nginx

4,验证:

1)在浏览器中输入http://localhost/

image.png

2tasklist /fi "imagename eq nginx.exe"

image.png

3netstat -ano | findstr "80"

image.png

5,修改配置

配置文件是conf\nginx.conf,如果没有,则把nginx-win.conf拷贝一份,重新命名为nginx.conf

例如,修改侦听端口为8080(默认80):

image.png

修改配置后使用nginx -s reload刷新:

image.png

四、设置流媒体服务

重新把nginx.conf命名为nginx-old.conf,把nginx-win-rtmp.conf拷贝一份重新命名为nginx.conf

检查如下配置:

 image.png

重启:

    nginx.exe -s stop

    start nginx

image.png

也可以用如下命令:

nginx.exe -s quit

Start nginx

image.png

另,直接终止进程再启动也是可行的:

    image.png

验证:

image.png

五、FFMPEG推流

1,什么是FFMPEG

2,下载

http://www.ffmpeg.org/

解压到:D:\ffmpeg

image.png

3,设置

设置环境变量,首先设置FFMPEG_HOME

image.png

然后修改Path

image.png

4,推流

1)修改nginx配置文件,server_namelocalhost改为本机IP地址(这会解决播放器拉流不正常的情况,一直无法播放视频的问题)

image.png


2)本地视频推流指令为:

ffmpeg.exe -re -i Videos\orange.mp4 -f flv rtmp://127.0.0.1:1935/live/edison

注意:以上指令中最后是rtmp://127.0.0.1:1935/live/edison,其中,rtmp是媒体传输协议,192.168.41.3是媒体服务器地址,1935是媒体服务器侦听端口,liveRTMP媒体服务名称,edison是应用名称,每次推流应用名称应不同才行。

image.png


使用VLC Media Player测试:

image.png

3)本地摄像头和麦克风推流指令

ffmpeg -f dshow -i video="Integrated Camera" -f dshow -i audio="麦克风阵列 (英特尔® 智音技术)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.41.3:1935/live/home

 注意:以上指令中最后是rtmp://192.168.41.3:1935/live/home,其中,rtmp是媒体传输协议,192.168.41.3是媒体服务器地址,1935是媒体服务器侦听端口,liveRTMP媒体服务名称,home是应用名称,每次推流应用名称应不同才行。

5,查询本地麦克风和摄像头的方法:

1)使用ffmpeg指令

ffmpeg -list_devices true -f dshow -i dummy

2)“计算机管理”查设备属性

ffmpeg指令查询结果有乱码时,可以使用“计算机管理”的设备属性来查看和拷贝:

image.png

“友好名称”,拷贝下面的值。

3)查询指定摄像头信息指令

ffmpeg -list_options true -f dshow -i video="Integrated Camera"

4)查询指定麦克风信息的指令

ffmpeg -list_options true -f dshow -i audio="麦克风阵列 (英特尔® 智音技术)"

5)测试指定摄像头是否可用

ffplay -f dshow -i video="Integrated Camera" (或者ffplay -f vfwcap -i 0

六、VLC播放器和拉流

 拉流和推流的关系如下图:

image.png

播放端为PC,可采用VLS Media Player,下载地址为:

 https://www.videolan.org/vlc/

播放端为Android,可采用ijkplayer

还可以采用JavaScript播放器,例如:jwplayer

jwplayer官网:

https://www.jwplayer.com/

Jwplayer下载地址:

https://webscripts.softpedia.com/script/Multimedia/Video/JW-FLV-Media-Player-41172.html