Linux Centos上搭建rtmp直播环境Android上实现推流

本文目的:

在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

使用下面命令可查看服务器信息

#lsb_release -a

自我介绍:我是一个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:

  1. yum install git  

2.下载nginx-rtmp-module,官方github地址:https://github.com/arut/nginx-rtmp-module

  1. git clone https://github.com/arut/nginx-rtmp-module.git  
3.yum安装openssl:

  1. yum -y install openssl openssl-devel   

本文为大家讲解的是ubuntu下安装nginx错误error: the HTTP rewrite module requires the PCRE library 解决方法,感兴趣的同学参考下。

错误描述:

ubuntu安装nginx时提示error: the HTTP rewrite module requires the PCRE library
 
解决方法:
需要安装pcre包。
sudo apt-get update
sudo 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支持

  1. wget http://nginx.org/download/nginx-1.8.1.tar.gz    
  2. tar -zxvf nginx-1.8.1.tar.gz    
  3. cd nginx-1.8.1    
  4. ./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module      
  5. make && make install   
2.如果你已经安装了nginx, 则只需要在nginx的源码目录添加rtmp支持,nginx的源码目录与安装目录?查看安装目录
  1. whereis nginx  
而我们这里是要找源码目录,这就需要你自己找了, 这个取决于你当时下载nginx时存放的目录, 推荐一个命令供你快速查到它,首先查询自己nginx的版本
  1. /usr/local/nginx/sbin/nginx -v  
  1. nginx version: nginx/1.8.1  
如果输出如上,那么你的nginx源码目录可能为:

nginx-1.8.1

再使用find命令查找其位置
  1. find / -name nginx-1.8.1  
结果我的装在 这个位置,进入此目录里面有一个绿色的configure可执行文件,那就说明找对了

/root/nginx-1.8.1

然后继续执行第一步剩下的内容

  1. ./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module      
  2. make && make install   
3.如果你以前使用的yum安装的,则需要先停止nginx运行,并卸载nginx,重新使用源码安装的方式即做第一步的操作,卸载命令

  1. yum remove nginx  


(3)修改nginx配置文件,没有vim的可以yum install vim 安装一个,或者用vi也行

  1. vim /usr/local/nginx/conf/nginx.conf   

修改内容如下,在http的上面加入,这里只是简单的配置,更多配置点击这里:

  1. rtmp {      
  2.     server {      
  3.         listen 1935;  #监听的端口    
  4.         chunk_size 4000;      
  5.              
  6.         application hls {  #rtmp推流请求路径    
  7.             live on;      
  8.             hls on;      
  9.             hls_path /usr/share/nginx/html/hls;      
  10.             hls_fragment 5s;      
  11.         }      
  12.     }      
  13. }  

并修改http中的server为如下:

  1. server {    
  2.     listen       81;    
  3.     server_name  localhost;    
  4.     #charset koi8-r;    
  5.     #access_log  logs/host.access.log  main;    
  6.     
  7.     location / {    
  8.         root   /usr/share/nginx/html;    
  9.         index  index.html index.htm;    
  10.     }    
  11.     
  12.     #error_page  404              /404.html;    
  13.     
  14.     # redirect server error pages to the static page /50x.html    
  15.     #    
  16.     error_page   500 502 503 504  /50x.html;    
  17.     location = /50x.html {    
  18.         root   html;    
  19.     }  

:wq 保存并退出


1.在/usr/share/目录下创建nginx/html/hls

  1. cd /usr/share  
  2. mkdir nginx  
  3. cd nginx  
  4. mkdir html  
  5. cd html  
  6. mkdir hls  
  7. chomd -R 777 /usr/share/nginx  

2.回到/usr/share/目录下,查看nginx及其子目录是否都有读写权限

  1. ls -ld nginx/   

(4)最后一步启动Nginx

  1. /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

Linux Centos上搭建rtmp直播环境Android上实现推流

Linux Centos上搭建rtmp直播环境Android上实现推流

Linux Centos上搭建rtmp直播环境Android上实现推流


拉流最简单的就是用ios的Safari浏览器打开拉流地址就能直接观看,或者使用ijkplayer框架