一、什么是媒体服务器
媒体服务器这个名词最初来自于NGN(下一代网络),在软交换设备控制下提供IP网络上各种媒体资源管理功能,含视频、音频、图片、图文消息等等。
后来逐渐演化为流媒体服务器,从而提供以流的方式推送、存储、拉动媒体资源,尤其是实时和准实时的音视频资源。
应用领域包括视频直播、视频点播、短视频、视频会议、远程教育、远程医疗等。
著名的开源媒体服务器,包括Red5 Server、Live555、EasyDarwin、Open Streaming Server、Nginx+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
3,启动:双击启动或者在cmd下输入start nginx
4,验证:
(1)在浏览器中输入http://localhost/
(2)tasklist /fi "imagename eq nginx.exe"
(3)netstat -ano | findstr "80"
5,修改配置
配置文件是conf\nginx.conf,如果没有,则把nginx-win.conf拷贝一份,重新命名为nginx.conf
例如,修改侦听端口为8080(默认80):
修改配置后使用nginx -s reload刷新:
四、设置流媒体服务
重新把nginx.conf命名为nginx-old.conf,把nginx-win-rtmp.conf拷贝一份重新命名为nginx.conf。
检查如下配置:
重启:
nginx.exe -s stop
start nginx
也可以用如下命令:
nginx.exe -s quit
Start nginx
另,直接终止进程再启动也是可行的:
验证:
五、FFMPEG推流
1,什么是FFMPEG
略
2,下载
解压到:D:\ffmpeg
3,设置
设置环境变量,首先设置FFMPEG_HOME
然后修改Path:
4,推流
(1)修改nginx配置文件,server_name从localhost改为本机IP地址(这会解决播放器拉流不正常的情况,一直无法播放视频的问题)
(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是媒体服务器侦听端口,live是RTMP媒体服务名称,edison是应用名称,每次推流应用名称应不同才行。
使用VLC Media Player测试:
(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是媒体服务器侦听端口,live是RTMP媒体服务名称,home是应用名称,每次推流应用名称应不同才行。
5,查询本地麦克风和摄像头的方法:
(1)使用ffmpeg指令
ffmpeg -list_devices true -f dshow -i dummy
(2)“计算机管理”查设备属性
当ffmpeg指令查询结果有乱码时,可以使用“计算机管理”的设备属性来查看和拷贝:
选“友好名称”,拷贝下面的值。
(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播放器和拉流
拉流和推流的关系如下图:
播放端为PC,可采用VLS Media Player,下载地址为:
播放端为Android,可采用ijkplayer
还可以采用JavaScript播放器,例如:jwplayer,
jwplayer官网:
Jwplayer下载地址:
https://webscripts.softpedia.com/script/Multimedia/Video/JW-FLV-Media-Player-41172.html
来源:oschina
链接:https://my.oschina.net/u/4385718/blog/4914941