需求:现在需要搭建一台流媒体服务器,为了将主讲人的电脑桌面屏幕和声音直播给远端的人接收实时观看,要求延迟在5秒左右。理论上RTSP、RTMP、HTTP都可以做直播和点播,但是一般做直播都是用RTSP和RTMP,做点播用HTTP。做视频会议的时候原来使用的是SIP协议,现在基本上被RTMP协议取代了。两种方案如下:1)rtsp目前用的比较流行的是live555、vlc、DarwinStreamingSrvr5.5.5等开源软件。2)rtmp只能用nginx加载rtmp模块来搭建服务端。首先值得我们需要思考的几个问题:
1、直播端的数据流是拉取还是推送?
2、是服务端主动拉取?还是直播端安装推流软件基于工具来推流?
3、服务端能接收推流吗?如何测试推流成功?
4、接收端用什么接收测试?工具还是浏览器?需要的环境及工具:
1、笔记本一台(这里作为服务端也是直播端,最好能上公网且是ubuntu系统)
2、Flv视频文件一个(测试点播文件)3、vlc客户端一个(接收端使用)或者能上网的电脑一台4、obs客户端一个(直播端)方案
一、先尝试第一种解决方案rtsp,网上搜索的方案大多数只有三种:
1、用live555作为服务端(网上一堆方法,部署也很简单)结果:只实现了点播的效果,用obs推流报不知道的协议,网上查询实现直播需要修改源码,弃之。
2、用vlc作为服务端(网上一堆方法,部署也很简单)结果:实施过程相当简单,但是只能实现mp3音频文件的串流,试过桌面串流好像不行。而且高并发的也不确定有没有性能上的问题。也弃之。
3、用DarwinStreamingSrvr5.5.5作为服务端(网上一堆方法,部署也很简单)结果:点播都不行,更别说是直播了,当然这里我不否定是不是部署有问题,最后果断弃之。实验后的结论:RTSP果断放弃吧!虽然说是延迟很低、实时性高,但是部署都失败了。所以我这里准备采用RTMP作为服务端。关于vlc和obs两个工具的使用感受:vlc只能作为服务端和接收端,不能作为直播端推送数据流到服务端。obs只能作为直播端推送数据流到服务端,不能作为服务端和接收端。综上所述解答上面提出的几个问题:
1、直播端的数据流是拉取还是推送?答:推送
2、是服务端主动拉取?还是直播端安装推流软件基于工具来推流?答:是直播端用obs软件推流
3、服务端能接收推流吗?如何测试推流成功?答:服务端可以接受推流,服务端可以用盘古直播服务器,在盘古直播注册一个账号,然后记住流媒体服务器的url和流密钥,在obs软件设置里面填上这个参数就可以测试推流成功了。
4、接收端用什么接收测试?工具还是浏览器?答:接收端用vlc可以接收测试,但是我个人建议还是使用浏览器里面带的播放器测试,延迟更低,但是必须要能上公网,地址如下:/players/srs_player.html,在URL里面输入你流媒体服务器的地址即可!截图如下:
方案
二、一、服务端操作:
1、笔记本安装ubuntu系统(步骤略)
2、安装obs软件,注意obs官网linux版本只支持ubuntu安装,所以现在知道为什么上面说明需要ubuntu系统了吧!当然windows也可以,因为我这里还需要一些php环境运行一些其它的服务。点击(此处)折叠或打开sudoadd-apt-repositoryppa:obsproject/obs-studiosudoapt-getupdate