由于自己有一个IM类的应用,为了完善它所以决定也加上直播和短视频功能。做直播目前有两种方法,一是直接对接第三方的直播服务产品,二是自己搭服务再开发。所以这里也从这两个方法推荐简单的实现方式,阿里云和腾讯云之类的大厂产品就不安利了。(公众号回复“直播”获取源码)
1. 第三方,PHP+Uni-App+LiveQing
2. 自己开发,PHP+Uni-app+Nginx-rtmp-module
1. 客户端采集视频流。(开摄像头,录屏等)
2. 客户端推流到rtmp服务器上。
3. rtmp推流到某个特定端口。
4. 其他客户端再对该视频流进行拉流,实现直播。
第三方这次推荐的是一个叫LiveQing的平台,有点是搭建快捷方便,功能完善。在服务器上运行了他们的包后除了能实现主流业务场景的直播,而且还提供短视频的点播服务。还包括API调用,通过接口实现直播的创建,删除,直播数据统计。但是是要收费,该软件包在一台物理机或云服务器上只能免费试用一个月。
1. 找到该官网,选择rtmp直播点播流媒体,下载试用把对应系统解压到自己服务器。
2. 目录如下,将start.sh授权为777。然后./start.sh 运行该文件。
3. 运行前可以打开liveqing.ini进行设置,比如后台登录密码,端口号等。
4. 默认需要开启10080和10085,所以需要用防火墙放行,操作如下。
systemctl start firewalld.service // 开启防火墙
firewall-cmd add-port=10080/tcp --permanent
firewall-cmd add-port=10082/tcp --permanent
firewall-cmd --reload // 重启
firewall-cmd --list-ports // 查看放行的所有端口
5. 端口放行,然后在运行start.sh出现下面图标表示成功。
6. 浏览器输入服务器的外网IP:10080,就可以进入控制面板了。
7. 创建一个直播,设置名称和ID,然后选择编辑获取推流地址。
8. 为了测试可以本地下载一个OBS软件推流到该地址,只要一推流,直播状态就会显示直播中并且点击编辑可以获取拉流的地址。
9. 同样为了方便可以使用VLS软件进行拉流或者wowza在线网站测试直播。
不使用第三方的话,就需要搭建rtmp服务,配置Nginx,APP视频采集推流,拉流等等。如果是大型平台,需要进行分流集群等。流媒体服务器依赖的服务,1.nginx 服务器;2.nginx服务器安装需要依赖的服务 OpenSSL、pcre、zlib、 c++、gcc等,服务器环境是Centos 7.3 64 位。
1. 进入根目录,mkdir source #创建源码目录,后面的源码都放在这个目录。cd source进入该目录。
2. 下载git,yum -y install git,然后通过网络下载需要的包。
git clone https://github.com/nginx/nginx.git #从github服务器上将nginx的源代码下载下来
git clone https://github.com/arut/nginx-rtmp-module.git #将rtmp模块的源码下载下来
wget https://www.openssl.org/source/openssl-1.1.0.tar.gz #下载OpenSSL源码包
wget https://ftp.pcre.org/pub/pcre/pcre-8.39.tar.gz #下载pcre源码包
wget http://www.zlib.net/zlib-1.2.11.tar.gz #下载zlib包源码
3. tar -zxvf 包名 #解压各个包源码
4. 在将nginx和需要的包编译前需要先安装gcc,安装过可以省过。
yum -y install gcc #确保依赖的gcc安装
yum -y install gcc-c++ #确保依赖的c++已经安装
5. 然后cd命令进入source下的nginx目录,输入下面命令。
./auto/configure --prefix=/usr/local/nginx \
--with-pcre=../pcre-8.39 \
--with-openssl=../openssl-1.1.0 \
--with-zlib=../zlib-1.2.11 \
--with-http_v2_module \
--with-http_flv_module \
--with-http_mp4_module \
--add-module=../nginx-rtmp-module/
6. 检查成功会出现如下,然后make编译一下。
7. make install 安装
8. 以上操作后表示Nginx编译安装完成,然后cd到根目录,/usr/local/nginx/sbin,如果要测试Nginx是否可以访问。先放行80端口重启防火墙,在sbin下输入./nginx启动Nginx服务。浏览器访问IP地址:80,出现以下表示成功。
9. 在nginx配置文件中配置rtmp服务,记住rtmp服务是和http服务是平级,所以我们需要在和http配置平级的位置另起rtmp服务。
vi /usr/local/nginx/conf/nginx.conf #修改配置文件
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
}
application live2 {
live on;
record off;
}
application vod {
play /var/flvs;
}
application vod_http {
play http://服务器的ip/vod;
}
application hls {
live on;
hls on;
hls_path /tmp/hls;
}
}
}
/usr/local/nginx/sbin/nginx -s reload #修改配置文件重启nginx服务
10. 上面rtmp服务的端口是1935,所以也需要按之前方法给1935端口放行,检查云服务器的安全组是否也放行,然后再重启防火墙。
11. 本地电脑测试1935是否开启,可以cmd命令telnet 服务器IP地址 端口号,如果出现一下界面说明端口已经通了 。
12. 接下来也可以通过OBS推流到该地址,然后用WOWZA拉流进行测试。
rtmp://你的服务器ip:端口(1935)/live #URL填写流的地址
13. 接下来演示uni-app的推流写法。
返回
翻转
{{contTime}}
美化
倒计时
完成
14. 拉流演示代码。
对方邀请你开始视频聊天
15. uni-app模块权限如下。