1. 程式人生 > >使用nginx-rtmp搭建視訊直播伺服器

使用nginx-rtmp搭建視訊直播伺服器

安裝nginx前需要幾樣準備工作

第一個需要C++編譯器,在ubuntu下直接安裝g++即可

sudo apt-get install g++

然後,這個版本的nginx預設需要的是pcre和zlib和openssl,分別去這兩個官方網站下載最新的版本,我下載的是pcre-8.32.tar.gz,zlib-1.2.8.tar.gz,openssl-1.0.2h.tar.gz

tar -xzvf pcre-8.32.tar.gz
tar -xzvf zlib-1.2.8.tar.gz
tar -xzvf openssl-1.0.2h.tar.gz

我將這些包解壓在了/home/robert使用者目錄下,解壓在哪裡無所謂

/home/robert/pcre-8.32
/home/robert/zlib-1.2.8
/home/robert/openssl-1.0.2h

然後解壓nginx, 解壓在了/home/robert使用者目錄下

tar -xzvf nginx-1.10.1.tar.gz
/home/robert/nginx

解壓完後進入解壓出來的目錄

cd /home/robert/nginx

非常重要的rtmp模組:nginx-rtmp-module,使用github下載:

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

然後執行configure, 這是比較重要的一步

sudo ./configure --prefix=/usr/local/nginx --add-module=/home/robert/nginx-rtmp-module --with-pcre=/home/robert/pcre-8.32 --with-openssl=/home/robert/openssl-1.0.2h --with-zlib=/home/robert/zlib-1.2.8

prefix指定nginx安裝的目錄,後面兩個是前面的兩個模組,如果不需要安裝這兩個模組可以用–without-http_rewrite_module和–without-http_gzip_module
然後就是執行make和make install,如果沒有報錯的話nginx就安裝完成了

sudo make
sudo make install

看一下/usr/local/nginx目錄

[email protected]:/usr/local/nginx$ ll
total 48
drwxr-xr-x 12 root   root 4096 6月  22 11:21 ./
drwxr-xr-x 11 root   root 4096 6月  22 11:15 ../
drwx------  2 nobody root 4096 6月  22 11:21 client_body_temp/
drwxr-xr-x  2 root   root 4096 6月  22 17:43 conf/
drwxr-xr-x  2 root   root 4096 6月  22 11:19 conf_bak/ <手動備份>
drwx------  2 nobody root 4096 6月  22 11:21 fastcgi_temp/
drwxr-xr-x  2 root   root 4096 6月  22 17:32 html/
drwxr-xr-x  2 root   root 4096 6月  22 17:43 logs/
lrwxrwxrwx  1 root   root   16 6月  22 11:17 nginx -> /user/sbin/nginx
drwx------  2 nobody root 4096 6月  22 11:21 proxy_temp/
drwxr-xr-x  2 root   root 4096 6月  22 11:15 sbin/
drwx------  2 nobody root 4096 6月  22 11:21 scgi_temp/
drwx------  2 nobody root 4096 6月  22 11:21 uwsgi_temp/

進入sbin目錄,執行nginx

sudo ./nginx 啟動nginx

檢視nginx程序

[email protected]:/usr/local/nginx$ ps aux | grep nginx
root      78775  0.0  0.1  32696  4848 ?        Ss   6月22   0:00 nginx: master process sbin/nginx -c conf/nginx_rtmp.conf
nobody    78776  0.0  0.2  33256  7648 ?        S    6月22   0:00 nginx: worker process
nobody    78777  0.0  0.2  32912  7244 ?        S    6月22   0:00 nginx: cache manager process
robert    79477  0.0  0.0  21292   944 pts/9    S+   09:54   0:00 grep --color=auto nginx

nginx的啟動方法

nginx -c conf/nginx_rtmp.conf 使用指定的配置檔案啟動
nginx -s reload 重啟nginx服務
nginx -s stop   停止nginx服務,強制快速結束
nginx -s quit   停止nginx服務,溫柔的結束

開啟瀏覽器輸入http://ip可看到nginx已經啟動的畫面

http://192.168.2.48

配置nginx-rtmp模組

修改nginx配置檔案,nginx_rtmp.conf

[email protected]:/usr/local/nginx/conf$ cat nginx_rtmp.conf 

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


rtmp {
    server {
        listen 1935;

        application myapp {
            live on;
        }

        application hls {
            live on;
            hls on;
            hls_path /tmp/app;
            hls_fragment 5s;
        }
    }
}

http {
    server {
        listen 8080;

        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }

        location /stat.xsl {
            root /home/robert/nginx-rtmp-module;
        }

        location /control {
            rtmp_control all;
        }

        location /rtmp-publisher {
            root /home/robert/nginx-rtmp-module/test;
        }

        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }

            alias /tmp/app;
            expires -1;
        }

        location / {
            root /home/robert/nginx-rtmp-module/test/rtmp-publisher;
        }
    }
}

上面配置檔案指定了兩個application, 一個myapp,一個hls。
myapp來處理flash流,hls來處理m3u8檔案,也就是蘋果裝置上的視訊流。

配置好上面的nginx-rtmp-module路徑後,重啟nginx服務。

服務正常啟動後,使用ffmpeg推一個本地視訊流到nginx,注意這個本地視訊的格式必須是
h264+aac格式的,否則不能正常播放。

向兩個application推流:

ffmpeg -re -i s2.mp4 -vcodec copy -acodec copy -f flv rtmp://192.168.2.48/myapp/mystream

ffmpeg -re -i s2.mp4 -vcodec copy -acodec copy -f flv rtmp://192.168.2.48/hls/mystream

hls格式的用於在ios上播放。

修改對應的播放頁面

我們在上面配置檔案指定了根目錄
/home/robert/nginx-rtmp-module/test/rtmp-publisher

檢視一下根目錄的檔案
[email protected]:~/nginx-rtmp-module/test/rtmp-publisher$ ll
total 1664
drwxrwxr-x 2 robert robert    4096 6月  22 17:27 ./
drwxrwxr-x 4 robert robert    4096 6月  22 11:28 ../
-rw-rw-r-- 1 robert robert     618 6月  22 17:18 player.html
-rw-rw-r-- 1 robert robert     313 6月  22 17:00 playhls.html
-rw-rw-r-- 1 robert robert     513 6月  22 17:05 publisher.html
-rw-rw-r-- 1 robert robert     314 6月  22 10:46 README.md
-rw-rw-r-- 1 robert robert    2830 6月  22 10:46 RtmpPlayerLight.mxml
-rw-rw-r-- 1 robert robert   47222 6月  22 10:46 RtmpPlayerLight.swf
-rw-rw-r-- 1 robert robert    2133 6月  22 10:46 RtmpPlayer.mxml
-rw-rw-r-- 1 robert robert   47281 6月  22 10:46 RtmpPlayer.swf
-rw-rw-r-- 1 robert robert    2741 6月  22 10:46 RtmpPublisher.mxml
-rw-rw-r-- 1 robert robert   47496 6月  22 10:46 RtmpPublisher.swf
-rw-rw-r-- 1 robert robert 1507328 6月  22 17:27 s2.mp4
-rw-rw-r-- 1 robert robert   10220 6月  22 10:46 swfobject.js

我們修改一下player.html

<!DOCTYPE html>
<html>
<head>
    <title>RTMP Player</title>
    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript">
        var flashVars = {
            streamer: 'rtmp://192.168.2.48/myapp',
            file:'mystream'
        };
        var params = {};
        params.allowfullscreen = "false";
        var attributes = {};
        swfobject.embedSWF("RtmpPlayer.swf", "rtmp-publisher", "640", "480", "9.0.0", null, flashVars, params, attributes);
    </script>
</head>
<body>
    <div id="rtmp-publisher">
        <p>Flash not installed</p>
    </div>
</body>
</html>

注意修改檔案中這兩個語句,這是我們使用ffmpeg推送的地址。
這裡把localhost改成了機器ip, 用localhost有不出視訊的情況。

streamer: 'rtmp://192.168.2.48/myapp',
file:'mystream'

播放HLS檔案

HLS檔案對應的Html:

<!DOCTYPE html>
<html>
<head>
    <title>HLS Player</title>
</head>
<body>
<video height="270" width="480" controls>
    <source src="http://server-ip-address:8080/hls/mystream.m3u8" type="application/vnd.apple.mpegurl" />
    <p class="warning">Your browser does not support HTML5 video.</p>
</video>
</body>
</html>

在ipad上播放地址:

http://server-ip-address:8080/hls/mystream.m3u8

開啟對應的網址,可以看到實際的效果:

相關推薦

使用nginx-rtmp搭建視訊直播伺服器

安裝nginx前需要幾樣準備工作 第一個需要C++編譯器,在ubuntu下直接安裝g++即可 sudo apt-get install g++ 然後,這個版本的nginx預設需要的是pcre和zlib和openssl,分別去這兩個官方網站下載最新

openresty +rtmp 搭建視訊直播伺服器

最近搭建了一個rtmp直播伺服器, 因為nginx的rtmp伺服器本身需要一些http的控制, 所以選用了openresty這個nginx+lua的http框架, 再其中包含rtmp伺服器, 這樣既可以充當rtmp直播伺服器,也可以充當http,還可以直接在其中用lua指令碼完成相關控制

CentOS7下搭建基於Nginx的HLS,RTMP流媒體直播伺服器

CentOS7下搭建基於Nginx的HLS,RTMP流媒體直播伺服器 安裝wget 更改yum源 安裝依賴庫 複製nginx-1.6.2.tar.gz、nginx-rtmp-module 安裝、編譯Nginx 編輯修改nginx.conf

ubuntu下使用nginxnginx-rtmp-module配置直播推流伺服器

本來準備在centos伺服器上搭建的,因為筆者工作系統是ubuntu,因此直接在本機上搭建,更方便快捷,配置過程比較簡單,記錄一下。 目錄 配置環境 安裝obs-studio開始第一次推流 安裝vlc播放器開始拉流 配置環境 配置環境 配

iOS開發 搭建視訊直播系統,基於LFLiveKit+ijkplayer+rtmp(iOS端)

本文主要使用的三個技術: 推流:LFLiveKit 播放:ijkplayer 伺服器:nginx+rtmp+ffmpeg   有了這三點技術就可以完成一個簡約的直播系統。效果圖如下(右邊的是用模擬器裝置執行播放的,中間的是用VLC播放器播放的,當前在用手機推流

使用Nginx+FFmpeg搭建HLS直播轉碼伺服器

目的:使Nginx支援Rtmp協議推流,並支援HLS分發功能及FFmpeg轉碼多位元速率功能。 一、準備工作 模組:nginx-rtmp-module-master(支援rtmp協議) 下載地址: http:

手把手教你搭建一個直播伺服器(Nginx+Rtsp)

本教程感謝慕課網常用工具:                ffmpeg音視訊編解碼                 ffplay音視訊播放工具搭建流媒體伺服器                準備流媒體伺服器linux                準備並安裝Nginx服務  

在自己的電腦下搭建nginx+rtmp的流媒體伺服器及用java對推流許可權驗證

因為公司任務需要讓做一個直播的系統,經過一段時間的研究,和方便以後撿起來所以把這個寫了下來 下載windows版本的nginx http://nginx-win.ecsds.eu/download/nginx 1.7.11.3 Gryphon.zip 解壓到c盤,最好

nginx+ffmpeg搭建流媒體伺服器直播流)

環境 系統環境:opensuse 12 需求 利用nginx和ffmpeg搭建流媒體伺服器(直播流),其他流後續會有所更新 關於用Nginx搭建flv,mp4,hls流媒體伺服器的技術乾貨! 模組:nginx_mod_h264_streaming(支援h264

nginx + rtmp 搭建流媒體服務器

chunk 服務 wid configure 版本 錯誤 1.0 ive 文件 一、安裝nginx服務器 1、路徑說明:   路徑:/usr/local/src 2、下載nginx-rtmp-module (我這裏的目錄是在/usr/local/src/下面)

基於nginx-rtmp搭建點播平臺

序言 RTMP(Real Time Message Protocol,實時資訊傳輸協議)協議屬於應用層協議,靠底層的 TCP 來保證資訊傳輸的可靠性。它由 Adobe 公司提出,用來解決多媒體資料傳輸流的多路複用(Multiplexing)和分包(packetizing)的問題。ngin

nginx+nginx-rtmp-module實現直播服務

環境 centos 6.8 nginx 1.10.3 nginx-rtmp-module 下載nginx-rtmp-module 當前目錄/opt git clone https://github.c

nginx+ffmpeg搭建流媒體伺服器

安裝ffmpeg: 下載FFmpeg和libx264的包 ffmpeg-2.4.1.tar.bz2  last_x264.tar.bz2 libx264需要yasm,所以先安裝yasm apt-get install yasm  

快速搭建視訊直播平臺

快速搭建直播服務 大體架構 srs+ffmpeg+第三方(阿里雲,騰訊雲等),因為不是專門做直播平臺,所以藉助第三方平臺(伺服器,頻寬,cdn可以省不少心)。當然如果你想自建一個視訊直播平臺也是可以的~~ srs用來接收從手機客戶端推來的rtmp流,ffmpeg用來對視訊進

ubuntu 14 x86_64 nginx rtmp ffmpeg 線上直播和點播

1、虛擬機器安裝 Ubuntu 14 x86_64 desktop 2、安裝vim,openssh-server(應該是自動開啟埠)。 3、安裝開發環境:點選開啟連結,這篇文章的開始有。 4、安裝ffmpeg(靜態安裝),這裡是英文源網:https://trac.ffmpe

Linux---nginx+ffmpeg搭建流媒體伺服器

這裡實現了簡單nginx+ffmpeg 推本地mp4視訊檔案的功能,以後將會繼續更新 環境 系統環境:CentOS release 6.7 (Final) 需求 利用nginx和ffmpeg搭建流媒體伺服器 步驟 安裝ffmpeg

Nginx RTMP 流媒體直播

       RTMP(Real Time Messaging Protocol)實時訊息傳送協議是Adobe Systems公司為Flash播放器和伺服器之間音訊、視訊和資料傳輸開發的私有協議。 它有三種變種: 1)工作在TCP之上的明文協議,使用埠1935;

筆記Mac下配置nginx+rtmp模組推流伺服器碰到的問題整理

安裝環境 ,Mac版本 : 10.13.5在裝的nginx版本為1.13.12如果你輸入http://localhost:8080後能看到nginx配置的首頁那說明OK。或nginx -v看下版本號。都能確保裝上.下面是在掛裝rtmp模組時出現的問題處理。安裝tap時:bre

Ubuntu下搭建Nginx伺服器+整合RTMP視訊直播流處理(邊做邊做更新)

簡介: 要求:做一個網頁獲取攝像頭的視訊流,然後將視訊流經過流伺服器推送到後臺視訊處理伺服器,再由後臺視訊處理伺服器推送到流伺服器,最終推送到頁面。如圖: 經過查閱資料,目前有red5以及nginx+nginx-rtmp-module實現,選擇第二種方式來實現。 準備工作:

NginxNginx-rtmp-module搭建RTMP視訊直播和點播伺服器

一.開發環境   Nginx地址:  http://nginx.org/download/nginx-1.14.2.tar.gz   Nginx-rtmp-module地址: https://github.com/arut/nginx-rtmp-module 二.執行安裝命