我从0搭建了一个直播系统,马上实践,所以首先分享一下整个搭建过程:我的操作系统是mac,其他系统的同学可以根据提示自行安装软件。一个简单的直播系统大致可以由三部分组成:搭建一个rtmp媒体服务器来推流和拉流现在的目标是快速搭建,所以当然是借助开源项目和一些软件:rtmp媒体服务器:这里使用srs推流结束:这里使用obs推流结束:这里使用播放器vlcrtmp媒体服务器搭建这里使用srs,srs的链接是:https://github.com/ossrs/srs先clone到本地,进入trunk目录:gitclonehttps://github.com/ossrs/srs.gitcdsrs/trunk然后执行:./configure--osx注:Centos6.x/Ubuntu1232/64bits用户只需要执行./configure。***执行:make执行成功后,我们就可以启动我们的服务了:./etc/init.d/srsstart如果是mac系统,此时会失败,因为srs.conf中的max_connections太大,而且目录是srs/trunk/conf/srs.conf可以修改为248(其他操作系统可能没有这个问题)。再次回到trunk目录:./etc/init.d/srsstart现在我们的srs服务器已经设置好了。注:Centos和Ubuntu可以参考官网搭建,比较简单。如果在启动过程中遇到其他错误,可以查看日志信息:srs/trunk/objs/srs.log其他命令:stop./etc/init.d/srsstoprestart./etc/init.d/srsrestartserver后,我们准备开始我们的推流。如果实在搭建不成功,可以先使用ip116.196.121.20进行测试。我是在京东云上搭建的,配置低。主要用于临时测试。它可能不稳定。随便看看,待会儿就关掉了。所以尽量自己搭建。使用OBS流式下载地址:https://obsproject.com/先下载安装,这里很简单先选择点击+选择源,这里我选择windowcapture,然后点击右边的setting:选择stream,streamtype选择custom,然后是url,填入:rtmp://你的ip/url流名称你喜欢的可以随意输入,如上。记住我们的url和流名称:rtmp://192.168.1.102/zhy/mylive完成后,单击确定。然后点击开始直播。这样我们的OBS推流就开始了,大家可以自己去探索软件的更多用途。***我们只剩下这些了。使用VLC拉流下载地址:http://www.videolan.org/vlc/先下载安装,这样会比较容易。点击打开网络,输入我们刚才的url+流名称,点击确定。片刻之后,我们的流媒体内容将开始播放。最左边是VLC,中间是OBS,右边是我的窗口抓包对象。至此,就算我们已经搭建了一个直播系统~~自己搭建成功的感觉是无比爽快的,也能极大的激发我们后续学习的兴趣。后期我们可以根据自己的需要选择学习pull或者push,逐步更换软件。拉流的方式有很多种,很多开源播放器都支持。这里我们考虑更换推流,希望能用手机推流。使用第三方推流SDK最简单的方式就是使用第三方推流SDK。大多数情况下,第三方SDK的完整解决方案是收费的,但是他们的streamingAndroidSDK是可以免费下载学习的。正在使用。这里以百度云的直播SDK为例,下载地址:https://cloud.baidu.com/doc/Downloadcenter/Push.html#.E7.89.88.E6.9C.AC.E6.9B.B4.E6.96.B0.E8.AF.B4.E6.98.8E直接点击下载AndroidSDK,下载完成后解压,然后倒进AS(这其实是个Eclipse工程。。。),还好,AS支持它。导入后:直接导入mStreamKey修改我们的rtmp地址即可。注意需要在build.gradle中添加v7依赖compile'c??om.android.support:appcompat-v7:23.0.0'然后运行。界面还可以:贴上运行效果图:还是用vlc拉流不过整个过程很慢,耐心等待,效果不是很好,不过跑完就够了,主要是学习。那你可以类比试试其他的SDK。当然很多开源项目作为学习资料其实比SDK更好,源码也更多。下面是一个开源项目的例子。使用开源项目推流使用开源项目:https://github.com/begeekmyfriend/yasea直接克隆导入。这个比较顺利。导入后,修改rtmp链接:然后运行(导入不成功,自己想办法解决,基本能力~)。贴个效果图:在硬解码的情况下,效果比之前的SDK好多了~~OK,我们换个方式看看。嗯,ffmpeg很流行,而且ffmpeg很强大。所以最后一个办法就是看如何使用ffmpeg推流了~~用ffmpeg推流可以自己下载ffmepg的源码,然后按照网上的方法编译成so。更简单实用的方法是编译Produce一个可以执行ffmpeg命令的,这样就可以做很多事情了。这里由于篇幅关系,直接使用别人编译的工程。直接导入https://github.com/WritingMinds/ffmpeg-android-java,项目支持直接运行ffmpeg的命令。ffmpeg命令有很多:例如:将.avi转换为gif动画(未压缩)ffmpeg-ivideo_origine.avigif_anime.gif合成视频和音频ffmpeg-ison.wav-ivideo_origine.avivideo_finale.mpg其中一个命令是支持流式传输,这里将手机上的zixia.mp4作为输入:ffmpeg-re-i/storage/emulated/0/zixia.mp4-vcodeclibx264-acodecaac-fflv-strict-2rtmp://192.168.1.102/zhy/mylive=那么这个库就是支持手机端运行ffmpeg命令很简单:粘贴我们需要执行的命令,运行即可。这里注意,我是在存储卡上推送一个媒体文件,注意添加相关权限,效果如下。好了,至此我们就大致学会了如何搭建一个小直播系统,如何使用SDK,开源项目,简单的使用ffmpeg推流~~很多时候,学习一个比较大的技术方向,一开始是很难的,而且无从下手,那么这篇文章应该是一篇非常通俗易懂的教程。希望对想学习直播技术的朋友有所帮助。根据自身情况继续深入学习~
