背景
由于工作需要,研究了一下关于移动端直播的实现方式。现在市场上有一些比较成熟的嵌入微信或者其他移动平台的直播系统,但大多收费较贵,处于经济原因还是决定自己研究一下。
思路
- 首先我们需要了解一下直播的概念与整体架构
简要的概况一下业务流程:
- 直播人员通过usb Camera等物理设备讲数据流传入电脑
- 电脑采集数据以RTSP,RTMP,HLS传输协议发送到服务器
RTSP协议由于一般使用于专线,直播容易遗漏和丢失数据,所以一般不采用;RTMP是主流的直播传输协议,延迟低,可用于pc和移动端(不适合苹果);HLS就是专门为适应苹果的一种直播协议,但它的延迟比RTMP要高,在移动web端一般采用HLS协议。 - 直播服务器。
图片截自上面那个链接的博文。这里想说一下的是nginx-rtmp是大家普遍推荐使用的服务器,但我没有使用,有机会可以试试,网上也有很多用它搭建流媒体环境的优秀博文。red5出来了很久,是开源项目,在Git上都可以下载,但更新的速度比较慢,维护的人也比较少,是java写的。 - 服务器采集了流媒体数据根据需要选择分层CDN节点,然后推送到观众的移动设备上。
- 关于直播平台搭建,还有一种WebRTC技术,源自谷歌,还饱受争议,但我觉得未来会有希望。
操作
- red5有很多版本,到现在,在Git上最新的就是v1.0.7,根据后缀不同,是不同的包。以-RELEASE结尾的是编译好来的server,里面有开启服务器的文件red5.bat或red5.sh等其他功能文件。在这里以windows系统为例。以-server-master命名的是server的maven工程,里面也有编译好的命令直接打开服务器,但也包括src。
-
打开服务器后,在浏览器中输入127.0.0.1:5080,会出现
,这说明安装是成功的。
-
点击左下角的install会出现报错,也无法加载本地的demo
,后台也会有报错,我记得好像是找不到某个方法,查阅了很多资料也没有解决这个问题。大多数人说这个和版本有关系,也可能和JDK有关系,官方给的是JDK1.6。
-
回到首页点击左下角的demo
-
再点击OFLA Demo中的任意一个,点击
JWPlayer demo 出现
- 而点击Classic demo出现
点击文件名即可播放
能够出现以上画面都说明你成功生成了流媒体文件,也可以在VLC media player中打开流媒体文件
输入rtmp://localhost:1935/oflaDemo/Avengers2.mp4或者不加端口rtmp://localhost/oflaDemo/Avengers2.mp4(默认端口是1935不是5080!),可以打开流媒体文件 - 注意由于各种原因很多同志是无法实现以上功能的,给一篇博文,按照他的方法可以解决无法找到本地demo的错误。
http://blog.csdn.net/oldmtn/article/details/47110351我用的是v1.0.7然后替换了博主说的那个wepapp所有文件才出现的classic Demo。估计大家用这个方法也是可以得。
- 构建直播平台。找一个可以检测到电脑物理设备(摄像头和音频)的浏览器,我试过chrome不行,会显示no viedo和no audio ,最好用的是firefox,打开http://localhost:5080/demos/publisher.html,设置(选择)好viedo和audio并start,再到server中connect即可出现即时画面与音频,效果还行有一定延迟。
- 装red5-HLS插件并编译。待更
博主在写完这些之后。。发现red5官方回复叫我不要用red5-HLS插件了。。转战red5Pro..伤心一把泪。下面对red5进行一个小概括。。
之所以red5的hls插件基本无法使用,有两个原因,red5官方转战pro了,这个已经弃置三年没更新。。第二,它是一个maven项目,在执行install时下载依赖包会有四五个无法下载,因为配置的地址已经失效,找了很久发现外国友人给了一些下载链接直接下载这几个缺失的jar包下载在下面的link ,除此之外,就算配好了插件,貌似运行也会有些bug无法修复。所以已经不推荐使用了。
red5 pro 搭建比较简单,而且在安卓和ios上都有demo,用起来会比较容易上手。red5pro 在git上下载地址Red5 Pro Server Examples,然而我想做的是移动H5平台的直播,官方还没有支持,但是有一个插件Red5 Pro HTML5 HLS Example,是用node.js执行并建立的例子,我试了一下有报错就没有继续了,大家可以尝试。
我没有继续的原因。。。red5pro是需要付费的,它只支持并发在10人以下的流媒体推送,2000人的是需要每月55刀,由于没有时间继续研究就没再试那个H5的demo了,大家如果只是想搭直播玩玩还是可以尝试的。
博主已经转战到nginx rtmp model + hls 了,这个搭流媒体服务器也很简单,并且采集端也有很多开源软件,比如obs和easydawin,但这都是C的工程,接下来等我有时间会写写这个搭建的过程。