本文目的:
在VPS服务器上配置一个直播环境,在Android&IOS客户端实现,直播推流到服务器上,在任意播放器上实现,拉取服务器上的流观看直播。(附android源码)
服务器环境:
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.2.1511 (Core)
Release: 7.2.1511
Codename: Core
使用下面命令可查看服务器信息
自我介绍:我是一个Android程序员,在一家创业公司工作,公司需要做一个直播应用,因为公司没有服务器运维的人员,所以我花了一个星期的时间,参考网络上的帖子,完成了自己的直播系统。
如果你认为这篇文章对你有帮助,请在GitHub的右上角上给我一个star,这里面有服务器所需的配置文件,一些工具包,和Android端的推流源代码,非常感谢!
https://github.com/yuchen931201/linux-rtmp-livevideo-android
(一) 服务器篇:
首先你得购买一台服务器,可在任意服务商购买,本文是在阿里云上购买的VPS(千万别买云虚拟主机了);
服务器理解:服务器其实就是一台高配电脑,全年7X24小时的为你服务器, VPS(virtual private server)可以理解为电脑里分配出来的一块空间,并利用虚拟机创建了一台新的服务器,它拥有独立的IP,独立的内存,独立的带宽...可独立开关机,相当于一台真实的机器,而"云虚拟主机"只是一台服务器中分配一块内存供你的站点使用,按照级别和价格排序,都是 实体主机电脑服务器 > VPS >云虚拟主机.
--------------------------------废话结束的分割线--------------------------------
(1)准备nginx-rtmp-module , git 和 openssl
1.使用yum安装git:
- yum install git
2.下载nginx-rtmp-module,官方github地址:https://github.com/arut/nginx-rtmp-module
- git clone https://github.com/arut/nginx-rtmp-module.git
- yum -y install openssl openssl-devel
本文为大家讲解的是ubuntu下安装nginx错误error: the HTTP rewrite module requires the PCRE library 解决方法,感兴趣的同学参考下。
错误描述:
sudo apt-get updatesudo apt-get install libpcre3 libpcre3-dev
你可能还需要安装
sudo apt-get install openssl libssl-dev
(2)下载安装Nginx,官方网站为:http://nginx.org/en/download.html
1.下载nginx解压,并添加rtmp和openssl支持
- wget http://nginx.org/download/nginx-1.8.1.tar.gz
- tar -zxvf nginx-1.8.1.tar.gz
- cd nginx-1.8.1
- ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
- make && make install
- whereis nginx
- /usr/local/nginx/sbin/nginx -v
- nginx version: nginx/1.8.1
nginx-1.8.1
再使用find命令查找其位置- find / -name nginx-1.8.1
/root/nginx-1.8.1
然后继续执行第一步剩下的内容
- ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
- make && make install
- yum remove nginx
- vim /usr/local/nginx/conf/nginx.conf
修改内容如下,在http的上面加入,这里只是简单的配置,更多配置 点击这里:
- rtmp {
- server {
- listen 1935; #监听的端口
- chunk_size 4000;
- application hls { #rtmp推流请求路径
- live on;
- hls on;
- hls_path /usr/share/nginx/html/hls;
- hls_fragment 5s;
- }
- }
- }
并修改http中的server为如下:
- server {
- listen 81;
- server_name localhost;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root /usr/share/nginx/html;
- index index.html index.htm;
- }
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root html;
- }
:wq 保存并退出
- cd /usr/share
- mkdir nginx
- cd nginx
- mkdir html
- cd html
- mkdir hls
- chomd -R 777 /usr/share/nginx
2.回到/usr/share/目录下,查看nginx及其子目录是否都有读写权限
- ls -ld nginx/
(4)最后一步启动Nginx
- /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
现在服务端就配置好了.
(二) 客户端篇:
本人的老本行是Android开发,所以只有android的源码,不过朋友也推荐过一个ios的源码,网上都能搜到的,这里也链接一下吧,我就不做源码详解,没什么好讲的代码很少;
(三) 测试篇:
推流地址: rtmp://****:1935/hls/test
拉流地址(观看地址):http://*****:81/hls/test.m3u8
*替换为你的IP地址,推流使用源码推或者直接使用obs来推流了,Mac版的obs可在这里的centos-package-utils目录中下载URL:https://github.com/yuchen931201/linux-rtmp-livevideo-android
拉流最简单的就是用ios的Safari浏览器打开拉流地址就能直接观看,或者使用ijkplayer框架