百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Android中直播视频技术探究之---服务端环境搭建和运行

off999 2025-02-27 16:23 36 浏览 0 评论

关注微信公众号 "Android技术分享"


温馨提示:要想实现推流和拉流,服务端起着重要的作用,Nginx+RTMP是现阶段直播市场后台采用的标配技术!

一、前言

前面介绍了Android中视频直播中的一个重要类ByteBuffer,不了解的同学可以 点击查看 到这里开始,我们开始动手开发了,因为我们后续肯定是需要直播视频功能,然后把视频推流到服务端,本地在进行拉流播放的流程。所以这个过程中,我们需要首先来把服务端这个中间环节的工作搞定,后续再弄推流和拉流功能。现在推流大部分都是使用RTMP/HLS协议的,关于这两个协议的区别:

所以我们服务端搭建就需要用这两个协议,不过本文放心了,不会去手动的编写一套协议代码的,谁叫这个世界属于开源呢?

需要的工具和源码包:

1、VLC观看视频流,ffmpeg工具进行推流

2、nginx源码包,nginx-rtmp-module模块源码包,pcre源码包,openssl源码包

二、安装nginx+rtmp

第一、下载源码包

在github上我们伟大的战斗名族俄罗斯人开发了基于nginx服务器扩展功能模块的rtmp和hls协议功能,所以说,我们的工作非常简单,把源码搞下来编译即可。但是在这个过程中还是有些操作问题的,这里就把流程梳理一遍:

1、首先你得想办法搞一台服务器,不管是买还是借

2、下载nginx源码包+pcre源码包+openssl源码包,这三个源码包网上都有,后续两个包是在编译nginx的时候需要用到。

3、下载nginx-rtmp-module源码包

这个直接去github上去下载即可:

https://github.com/arut/nginx-rtmp-module

第二、编译安装

到这里就把所有的源码包都搞齐了,下面把这些源码包放到服务器中的指定目录下:

然后使用tar命令直接解压即可:

tar -zxvf xxxx.tar.gz

这时候就开始编译nginx了,首先进入到nginx解压目录下,然后运行命令:

./configure --prefix=/usr/local/nginx_rtmp/nginx-1.9.9

--prefix是nginx编译安装之后的目录

运行报错:

./configure: error: the HTTP rewrite module requires the PCRE library

需要添加pcre模块,修改命令,添加参数:

--with-pcre=pcre的源码路径

./configure --prefix=/usr/local/nginx_rtmp/nginx-1.9.9 --with-pcre=/usr/local/nginx_rtmp/pcre-8.34

再次运行,可以了,但是这时候说明nginx代码没有问题了,下面就需要把rtmp模块加到nginx编译中:

./configure --prefix=/usr/local/nginx_rtmp/nginx-1.9.9 --with-pcre=/usr/local/nginx_rtmp/pcre-8.34 --add-module=/usr/local/nginx_rtmp/nginx-rtmp-module

直接使用 --add-module=nginx的rtmp模块代码路径

运行报错:

./configure: error: SSL modules require the OpenSSL library

需要添加openssl模块,添加参数:

--with-openssl=openssl的源码路径

./configure --prefix=/usr/local/nginx_rtmp/nginx-1.9.9 --with-pcre=/usr/local/nginx_rtmp/pcre-8.34 --with-openssl=/usr/local/nginx_rtmp/openssl-1.0.0d --add-module=/usr/local/nginx_rtmp/nginx-rtmp-module

编译运行成功

然后运行 make && make install命令进行安装即可。

注意:

如果想加上HLS功能的,可以使用这个命令:

--add-module=/usr/local/nginx_rtmp/nginx-rtmp-module/hls

本文不介绍了HLS协议了,因为配置和RTMP差不多。

三、配置RTMP协议

这时候在编译安装之后的目录中

其中conf目录中存放nginx的配置文件,sbin目录中是运行nginx的命令,那么我们先来看看如何配置nginx,让其具有rtmp功能:

rtmp {

server {

listen 1395;

chunk_size 4096;

application mylive {

live on;

}

}

}

当然还有很多其他配置,可以在使用的时候根据具体需求添加即可。

这里配置rtmp协议信息,需要注意的是端口和应用名称,比如这里端口是:1395,应用名是:mylive,那么后续推流的地址就是:

rtmp://server.xxx.com:1395/mylive/rtmpstream

其中rtmpstream是随便定义的,但是后续拉流地址必须也是这个地址。

还有一个细节就是,nginx默认的http协议信息中的端口是80,所以在后续运行的时候会出现端口占用的问题,因为这里现在只需用rtmp协议,所以直接把http协议的端口改成不常用的一个端口,让nginx运行成功即可。

四、运行nginx

信息配置好了之后,下面我们就来运行nginx吧,进入sbin目录下,运行命令:

然后查看进程信息:

因为我的机器中运行了两个nginx程序,所以有两个。

再看看1395端口情况:

看到,这时候端口还没有建立,因为我们还是没开始推流呢。

五、测试

上面就把环境搭建好了,下面就来测试一下吧,因为方便测试,直接使用PC上去推一个流做测试即可,后续会详细介绍Android中如何进行推流,PC上推流有一个比较好用的工具:ffmpeg,这个是开源的,用C语言开发的,所以Android平台在使用这个模块推流的话,就需要使用native层做桥接了,github地址:
https://github.com/FFmpeg/FFmpeg,不过这个工具在Windows下已经编译好了工具,直接去官网下载即可:https://ffmpeg.org,这个工具包功能很强大的,可以做视频编码,加字幕,水印等效果的。

下载了Windows平台的工具包之后,再把命令配置到环境变量中,直接在命令行中进行推流:

ffmpeg -re -i D:\tmp.mp4 -f flv rtmp://www.wjdiankong.cn:1395/mylive/rtmpstream

这里我把本地的一个mp4文件推流到服务器中,然后这时候我们还需要拉流进行观看,这个就需要一个很常用的流媒体工具:VLC了,可以自行下载这个工具即可,安装之后,在打开选项中,选择网络流媒体:

输入我们需要拉流的地址即可,点击播放,这时候在运行ffmpeg命令进行推流即可:

再推的过程中,我们可以去后台查看端口的状态了:

看到了,这时候端口开始建立了,正在推流,而且这时候拉流也有视频效果了:

为了有动态效果,特定做了gif:

六、流程分析

到这里,我们就完成了视频直播的后台环境搭建,也是我们后续要介绍推流和拉流的中间环节,下面在来看一下整个直播的推拉流的流程:

推拉流端都支持PC端和移动端的,采用的协议大部分都是RTMP或者是HLS。而且还有一个比较好的推拉流工具包:FFMpeg

所以现在很多直播的App,一个主播先出点血花钱买一个比较牛逼的设备(推流设备),然后就可以在家坐着赚钱了,而有一些土豪就开始拉流观看,送钱!!

其实,有时候服务器的结构可能如下:

这里会把推流的视频保存到一个地方,然后既可以支持视频的点播,也可以支持视频的直播了!

最后再来看一下现在很多大公司已经开始开发了整个视频直播功能的SDK,这里看一下腾讯云推出的录制+播放功能的SDK:

他的功能还是很全的,可以支持本地移动设备的推流(视频采集一般就是摄像头和桌面),然后对采集的视频做一些处理,然后在进行拉流播放,可以支持硬件加速,视频解码等功,这个也是我们后续会一一介绍的功能。

因为本文只是介绍环境搭建,所以真正在开发的过程中还会遇到一些问题的,到时候就需要去配置服务端信息了!


七、总结

本文主要介绍了如何搭建视频直播的服务端环境,这个是后续介绍推流和拉流的关键中间点,后续测试都需要这个环境的,我们采用了市面上常用的技术:Nginx+RTMP协议,需要弄到源码包,然后编译安装即可,然后为了验证效果,在Windows中使用了FFMpeg工具进行推流,使用VLC工具进行拉流视频观看,这个流程就算是通了,后续要做的就是如何把Android中的摄像头视频数据和桌面视频数据进行推流,以及拉流观看的功能。

手机看文章有点费劲,可以进入网页版:http://www.wjdiankong.cn

关注微信公众号:Android技术分享

相关推荐

电脑自带的防火墙怎么关(电脑的防火墙如何关闭)
电脑自带的防火墙怎么关(电脑的防火墙如何关闭)

点击开始,点击设置,进入设置后我们可以直接在上方的搜索框中直接搜索【defender】,就会弹出防火墙。点击进入防火墙后,在左侧的列表中找到【启用或关闭Windowsdefender防火墙】,并且点击进入。进入后,就可以自行关闭所有的防...

2025-12-18 03:03 off999

光猫和路由器哪个网速快(光猫网速快还是路由器网速快)

两个都快。这要从两个设备的功能说起。光猫是把光信号转变成数字信号的一种设备,随着光猫技术的发展,现在光猫也集成了路由器的功能,也带有有线和无线,只要有光纤加上光猫,就可以实现有线或者无线上网。路由器的...

台式电脑运行一段时间就死机

1、散热不良:显示器、电源和CPU工作时间太长会导致死机,给风扇除尘,上油。2、灰尘杀手:机器内灰尘过多也会引起死机故障。定期清洁机箱。3、内存条故障:主要是内存条松动,内存芯片本身质量所致,应根...

高清windows免费版观看(高清windows免费版观看网站)

方法一:1、右键单击开始菜单----运行2、在运行对话框中输入:devmgmt.msc,展开:显卡适配器,右击所列的显卡适配器,点击卸载。3、卸载后重新安装兼容Win10的显卡驱动,建议去官方下载...

h3c官网(H3C官网登录账号)

1H3C防火墙官网是存在的,可以通过搜索引擎或输入官方网址进行访问。2H3C防火墙官网提供了产品信息、技术支持、解决方案和服务支持等各种资源,帮助用户全面了解和使用H3C防火墙产品。同时,还有在线...

系统流小说下载(系统流小说大全完本)

全能奇才、末世之兑换高手、穿越之兑换无敌、:重生之我能升级、重生之模拟游戏、超级物品、戒指也疯狂、全职天才、疯狂道具、星戒、超级游戏分身、重生之神才风流、全能闲人、逆天作弊器之超级游戏、宅男之游戏人生...

win7网络设置初始化(win7网络设置初始化方法)

1、首先在操作系统桌面上,点击左下角开始按钮选择控制面板选项进入。2、进入控制面板主界面,点击查看方式下拉按钮选择大图标进入。3、切换至所有控制面板项,点击恢复选项进入。4、进入恢复界面,点击高级恢复...

家用笔记本电脑哪个牌子实惠又好用

在用机械革命s1pro键盘不好用,录音功能不好用,其它还行吧一分价钱一分货清华同方品牌的笔记本最便宜,然14最大的特点就是便宜,仅售3000元,属于新品笔记本中的超低价位。屏幕方面,熟悉的1080p...

免费使用的数据恢复软件(真正的免费的数据恢复软件)

1、在误删除数据后,无论是硬盘、U盘、SD卡还是其他存储设备,最好马上停止写入新的数据,保持现状,然后找适当的数据恢复软件进行恢复。请勿使用非专业软件,以免导致文件彻底无法恢复!  2、在误删除数据后...

感冒流鼻涕怎么办最简单方法

由于受凉感冒引起鼻腔腺体分泌旺盛导致鼻涕增多,建议在医生指导下使用玉屏风颗粒口服治疗促进恢复正常,可以进食鼻腔腺体分泌,改善流鼻涕,打喷嚏症状,另外注意保暖,不要进食辛辣刺激性食物,避免疲劳,多食用容...

tp路由器无线设置最佳参数(tp-link路由器网络参数怎么设置)

1,在浏览器中输入192.168.1.1,进入后台管理,输入用户名和密码登录。2,先连接外网。在左边选择“网络参数”下的“WAN口设置”。3,并在右边选择一种网络方式,如“PPPOE”并输入帐号和密码...

amd的cpu天梯图(amd全系列cpu天梯图)

低压版最高端是“FX-7500”,四核心,4MB二级缓存,CPU频率为2.1-3.3GHz,RadeonR7GPU六个计算单元384个流处理器,频率496-553MHz,内存支持DDR3-1600...

免费恢复微信好友软件(免费恢复微信好友软件哪个好用)

1.不存在免费的微信找回删除好友软件。2.因为微信的好友删除是一种数据操作,需要访问微信服务器上的数据,而微信官方并没有提供找回删除好友的功能,所以任何软件都无法实现这个功能。此外,使用未知来源的...

台式电脑突然断电后无法开机

首先,突然断电导致电脑不能正常开机,并不一定是系统故障,根据以下的方法进行排除。1、在断开电源的前提条件下,打开主机箱侧盖将内存条取下来,更换内存安装插槽的位置。2、找到主板电池,并且将主板电池取下来...

网易邮箱163登录下载(网易邮箱163登录下载不了)

手机163的登录入口163邮箱官网入口是;https://smart.mail.163.com/login.htm网易邮箱注册方法;1在浏览器搜索“网易邮箱”。2进入网易邮箱官网https://sma...

取消回复欢迎 发表评论: