1. 程式人生 > >Linux Centos上搭建rtmp直播環境Android上實現推流

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端的推流原始碼,非常感謝!

(一) 伺服器篇:

首先你得購買一臺伺服器,可在任意服務商購買,本文是在阿里雲上購買的VPS(千萬別買雲虛擬主機了);

伺服器理解:伺服器其實就是一臺高配電腦,全年7X24小時的為你伺服器, VPS(virtual private server)可以理解為電腦裡分配出來的一塊空間,並利用虛擬機器建立了一臺新的伺服器,它擁有獨立的IP,獨立的記憶體,獨立的頻寬...可獨立開關機,相當於一臺真實的機器,而"雲虛擬主機"只是一臺伺服器中分配一塊記憶體供你的站點使用,按照級別和價格排序,都是 實體主機電腦伺服器 > VPS >雲虛擬主機.

--------------------------------廢話結束的分割線--------------------------------

(1)準備nginx-rtmp-module , git 和 openssl

1.使用yum安裝git:

yum install git
git clone https://github.com/arut/nginx-rtmp-module.git
3.yum安裝openssl:
yum -y install openssl openssl-devel 

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 
2.如果你已經安裝了nginx, 則只需要在nginx的原始碼目錄新增rtmp支援,nginx的原始碼目錄與安裝目錄?檢視安裝目錄
whereis nginx
而我們這裡是要找原始碼目錄,這就需要你自己找了, 這個取決於你當時下載nginx時存放的目錄, 推薦一個命令供你快速查到它,首先查詢自己nginx的版本
/usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.8.1
如果輸出如上,那麼你的nginx原始碼目錄可能為:

nginx-1.8.1

再使用find命令查詢其位置
find / -name nginx-1.8.1
結果我的裝在 這個位置,進入此目錄裡面有一個綠色的configure可執行檔案,那就說明找對了

/root/nginx-1.8.1

然後繼續執行第一步剩下的內容
./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module    
make && make install 
3.如果你以前使用的yum安裝的,則需要先停止nginx執行,並解除安裝nginx,重新使用原始碼安裝的方式即做第一步的操作,解除安裝命令
yum remove nginx
(3)修改nginx配置檔案,沒有vim的可以yum install vim 安裝一個,或者用vi也行
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 儲存並退出 1.在/usr/share/目錄下建立nginx/html/hls
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




拉流最簡單的就是用ios的Safari瀏覽器開啟拉流地址就能直接觀看,或者使用ijkplayer框架


Gmail:[email protected]電子郵件:[email protected] QQ:[email protected]

免責宣告:這篇文章內容來自網際網路,沒有商業用途,如果我侵犯了您的權利,請與我聯絡,我會立即刪除.