轻松入门Android直播相关技术 从0搭建直播系统

简介:
本文讲的是 轻松入门Android直播相关技术 从0搭建直播系统, 我立马实践了下,所以首先给大家分享下整个搭建的流程:

本人的操作系统为mac,其他系统的同学可以根据提示,自行安装软件。

一个简易的直播系统,大致可以由三部分组成:

搭建一个rtmp媒体服务器

  • 推流端
  • 拉流端

现在目标是快速搭建起来,所以当然是借助开源项目和一些软件:

  • rtmp媒体服务器:这里使用srs
  • 推流端:这里使用obs
  • 拉流端:这里使用播放器vlc

rtmp媒体服务器的搭建

这里使用srs,srs的链接为:

https://github.com/ossrs/srs

首先clone到本地,进入到trunk目录:

 
  1. git clone https://github.com/ossrs/srs.git  
  2. cd srs/trunk 

然后执行:

 
  1. ./configure --osx 

注意: Centos6.x/Ubuntu12 32/64bits用户仅需要执行./configure。

最后执行:

 
  1. make 

执行成功后,就可以开启我们的服务了:

 
  1. ./etc/init.d/srs start 

如果是mac系统,此时会失败,原因是srs.conf中max_connections太大,

目录为srs/trunk/conf/srs.conf,可以修改为248(其他操作系统可能无此问题)。

再次回到trunk目录:

 
  1. ./etc/init.d/srs start 

到此我们的srs服务器就搭建起来了。

注:

Centos、Ubuntu可以参考官网搭建,比较简单。

如果你启动过程中还遇到了其他错误,可以查看log信息:

 
  1. srs/trunk/objs/srs.log 

其他指令:

 
  1. 停止 ./etc/init.d/srs stop  
  2. 重启 ./etc/init.d/srs restart 

有了服务器之后,我们就准备开始我们的推流端。

如果你实在搭建不成功,可以先拿116.196.121.20这个ip做测试,我在京东云上搭建的,配置较低,主要用于大家临时测试,可能不稳定,看一眼就行,后续会关掉,所以还是尽可能自己搭建成功吧。

使用OBS推流

下载地址: https://obsproject.com/

先下载安装,这里就简单了

轻松入门Android直播相关技术 从0搭建直播系统

首先选择点击+选择来源,这里我选择了窗口捕获,然后点击右侧的设置:

轻松入门Android直播相关技术 从0搭建直播系统

选择流,串流类型选择自定义,然后url,填写:

 
  1. rtmp://你的ip/你喜欢的url 

流名称可以按照上述自由输入。

记住我们的url和流名称:

 
  1. rtmp://192.168.1.102/zhy/mylive 

完成后,点击确定。

然后点击开始推流即可。

轻松入门Android直播相关技术 从0搭建直播系统

这样,我们的OBS推流就开启啦,软件的更多使用自行探索吧。

最后就剩下我们的拉流了。

使用VLC拉流

下载地址: http://www.videolan.org/vlc/

先下载安装,这个就更简单啦。

轻松入门Android直播相关技术 从0搭建直播系统

点击Open Network,输入我们刚才的url+流名称,点击确定即可。

轻松入门Android直播相关技术 从0搭建直播系统

稍等,就开始播放我们的推流内容了。

轻松入门Android直播相关技术 从0搭建直播系统

最左侧是VLC,中间是OBS,右侧是我窗口捕获对象。

到这里,就算我们搭建了一个直播系统啦~~自己搭建成功的感觉,无比爽快,也能很大的激发我们后续的学习兴趣。

后面我们可以根据自己的需求去选择学习拉流或者推流,逐步替换掉软件。拉流的方式很多,很多开源播放器都支持。这里我们考虑替换掉推流,希望可以使用手机来推流。

使用第三方推流SDK

最简单的方式,就是可以借助于第三方的推流SDK,大多情况下第三方SDK完整方案都是收费的,不过他们的推流Android SDK倒是可以下载无需付费情况下来学习使用的。

这里以百度云的直播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

直接点击下载Android SDK即可,下载完成后解压,然后倒入AS(这竟然是个Eclipse项目…),还好AS支持,导入后:

轻松入门Android直播相关技术 从0搭建直播系统

直接将mStreamKey修改我们的rtmp的地址即可。

注意,需要在build.gradle中添加下v7的依赖

 
  1. compile 'com.android.support:appcompat-v7:23.0.0' 

然后运行,界面还可以:

轻松入门Android直播相关技术 从0搭建直播系统

贴一下运行时的效果图:

轻松入门Android直播相关技术 从0搭建直播系统

还是以vlc拉流即可,整个过程很缓慢,耐心等待,效果也不是很好,不过能跑通即可,主要是学习。然后你可以举一反三试试其他的SDK。

当然了,很多开源项目其实比SDK作为学习资料更好,比较源码都有,下面以一个开源项目举例。

使用开源项目推流

使用一个开源项目:

https://github.com/begeekmyfriend/yasea

直接clone,导入。

这个比较顺利,导入后,修改下rtmp链接:

轻松入门Android直播相关技术 从0搭建直播系统

然后运行即可(导入不成功,自己想办法解决,基础能力啦~)。

贴一张效果图:

轻松入门Android直播相关技术 从0搭建直播系统

硬解码的情况下,效果比前面的SDK好很多~~

好了,最后我们再看一种方式。

恩,ffmpeg很火,ffmpeg很强大。

所以最后一种方式,就是看如何利用ffmpeg推流啦~~

利用ffmpeg推流

大家可以自己下载ffmepg的源码,然后按照网上的方式去编成so,简单的一点而且比较实用的,就是编出可以执行ffmpeg 命令的so,这样就能干很多事情了。

这里,由于篇幅,我们就直接使用别人编好的项目了。

https://github.com/WritingMinds/ffmpeg-android-java

直接导入,该项目支持直接运行ffmpeg的命令。

ffmpeg命令很多:

例如:

将.avi转成gif动画(未压缩)

 
  1. ffmpeg -i video_origine.avi gif_anime.gif 

合成视频和音频

 
  1. ffmpeg -i son.wav -i video_origine.avi video_finale.mpg 

其中有一个命令就是支持推流,这里将手机上的zixia.mp4作为输入:

 
  1. ffmpeg -re -i /storage/emulated/0/zixia.mp4  
  2.     -vcodec libx264  
  3.     -acodec aac  
  4.     -f flv  
  5.     -strict -2 rtmp://192.168.1.102/zhy/mylive= 

那么这个库是支持在手机上运行ffmpeg命令的,那就简单了:

轻松入门Android直播相关技术 从0搭建直播系统

贴上我们需要执行的命令,运行即可。

这里注意我推的是存储卡上的一个媒体文件,注意添加相关权限,效果如下。

轻松入门Android直播相关技术 从0搭建直播系统

好了,这样我们的大致学习了如何搭建一个小直播系统,如何利用SDK,开源项目,以及简单的使用ffmpeg来进行推流~~

很多时候,学习一个比较大的技术方向就是开头难,无从下手,那么本篇应该是一篇非常易懂的教程,希望对想要学习直播技术的小伙伴有所帮助,也希望以此能够激发大家一定的学习兴趣,当然直播技术远不止于此,大家可以根据自己的情况继续深入学习~


本文作者:佚名

来源:51CTO

原文标题:轻松入门Android直播相关技术 从0搭建直播系统
相关文章
|
24天前
|
搜索推荐 Android开发 iOS开发
安卓与iOS系统的用户界面设计对比分析
本文通过对安卓和iOS两大操作系统的用户界面设计进行对比分析,探讨它们在设计理念、交互方式、视觉风格等方面的差异及各自特点,旨在帮助读者更好地理解和评估不同系统的用户体验。
18 1
|
18天前
|
机器学习/深度学习 人工智能 搜索推荐
探索安卓应用中的新趋势:人工智能驱动的智能推荐系统
传统的应用推荐系统已经无法满足用户日益增长的个性化需求。本文将探讨如何通过引入人工智能技术,构建智能推荐系统,为用户提供更加精准、个性化的应用推荐体验,进而提升应用的用户满意度和留存率。
16 0
|
1月前
|
搜索推荐 测试技术 定位技术
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
|
1月前
|
测试技术 API 调度
【Android 从入门到出门】第七章:开始使用WorkManager
【Android 从入门到出门】第七章:开始使用WorkManager
19 3
【Android 从入门到出门】第七章:开始使用WorkManager
|
1月前
|
存储 Android开发 C++
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
30 3
|
1月前
|
Android开发
【Android 从入门到出门】第四章:现代Android开发中的导航
【Android 从入门到出门】第四章:现代Android开发中的导航
22 2
【Android 从入门到出门】第四章:现代Android开发中的导航
|
1月前
|
XML API Android开发
【Android 从入门到出门】第三章:使用Hilt处理Jetpack Compose UI状态
【Android 从入门到出门】第三章:使用Hilt处理Jetpack Compose UI状态
26 4
|
1月前
|
存储 XML 编译器
【Android 从入门到出门】第二章:使用声明式UI创建屏幕并探索组合原则
【Android 从入门到出门】第二章:使用声明式UI创建屏幕并探索组合原则
47 3
|
1月前
|
存储 SQL 数据库
【Android 从入门到出门】第六章:使用Room数据库并测试
【Android 从入门到出门】第六章:使用Room数据库并测试
29 4
|
1月前
|
存储 Android开发
【Android 从入门到出门】第八章:分页入门指南
【Android 从入门到出门】第八章:分页入门指南
21 3