ubuntu搭建nginx服務器實現視頻直播點播

開發環境
Ubuntu 16.04

nginx的服務器的搭建

1.安裝nginx的依賴庫
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev

2.安裝ffmpag(視頻點播,直播推流用)

$ add-apt-repository ppa:kirillshkrogalev/ffmpeg-next

$ apt-get update

$ apt-get install ffmpeg

3.安裝vlc播放器(視頻點播,直播拉流)

sudo apt-get install vlc
安裝完成之後在ubuntu系統設置–詳細詳細–默認應用程序–視頻選擇VLC爲默認視頻播放器

4.建立源碼編譯的目錄

$ mkdir nginx-src

$ cd nginx-src

5.下載源碼倉庫並解壓
nginx源碼
$ git clone https://github.com/nginx/nginx.git
nginx的rtmp模塊源碼
$ git clone https://github.com/arut/nginx-rtmp-module.git
(我下載的是nginx-1.8.1nginx-rtmp-module
下載完成後解壓到 nginx-src

6.配置並編譯nginx
使用nginx的默認配置,添加nginx的rtmp模塊。
這裏寫圖片描述
$cd nginx-1.8.1

$ sudo ./configure –add-module=../nginx-rtmp-module-master

$ sudo make

$ sudo make install

7.運行測試nginx

進入安裝目錄/usr/local/nginx,運行命令./sbin/nginx

$ cd /usr/local/nginx

$ sudo ./sbin/nginx

注意:以後所有的命令都在/usr/local/nginx目錄運行,也nginx配置文件的相對目錄。
如果對文件有修改需要重新啓動一下nginx,在/usr/local/nginx目錄

$ sudo  ./sbin/nginx -s reload

打開瀏覽器在地址欄輸入:localhost。如果,如下圖顯示那樣就證明您的nginx服務器搭建成功了
這裏寫圖片描述

8.配置直播,點播
$cd  /usr/local/nginx/conf
可以用gedit或者vim編輯內容如下,ps:主要添加rtmp直播點播模塊


#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;
    chunk_size 4096;
    publish_time_fix on;

    application vod {
        play /home/pangrui/Videos/;
    }

              # 推流其一
              application live {
                      live on; #stream on live allow
                      allow publish all; # control access privilege
                      allow play all; # control access privilege
              }
             #推流其二
      application hls_alic {
                      live on;
                      hls on;
                      hls_path /home/pangrui/hls;
                      hls_fragment 5s;
              }
    }

}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   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;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

9.使用ffmpeg向服務器推送一個視頻
我們重新啓動一下nginx

$ sudo ./sbin/nginx -s reload

$ sudo ffmpeg -re -i /home/pangrui/Videos/mv-gee.mp4 -c copy -f flv rtmp://localhost:1935/live/film

推薦 可用於瀏覽器播放

$ sudo ffmpeg -re -i /home/pangrui/Videos/mv-gee.mp4 -c copy -f flv rtmp://localhost:1935/hls_alic/film
這裏寫圖片描述

10.vlc拉流播放
打開視頻播放軟件選用的是VLC media-> open network stream….
如圖填寫我們要點播的節目地址rtmp://localhost/vod/mv-gee.mp4 如圖:
這裏寫圖片描述
同理直播用
rtmp://localhost:1935/live/film
或者rtmp://localhost:1935/hls_alic/film
點擊play即可播放!!!
注意,在hls_path的路徑添加一個站點來訪問即可!
推流還是用ffmpeg的命令來, 推流一段時間後, 你會發現在”/home/pangrui/hls”目錄裏, 有很多ts文件,
還有一個後綴”.m3u8”文件上面配置中的 server:8081 塊, 就是爲了能在外部能訪問這些ts文件和m3u8文件。
如果是瀏覽器播放flv可參考如下代碼:

<html>
<head>
    <link rel="stylesheet" href="http://vjs.zencdn.net/5.10/video-js.css">
</head>
    <video id=example-video width=960 height=540 class="video-js vjs-default-skin" controls>
        <source
            src="film.m3u8"
            type="application/x-mpegURL">
    </video>
    <script src="http://vjs.zencdn.net/5.10/video.js"></script>
    <script src="https://npmcdn.com/videojs-contrib-hls@^3.0.0/dist/videojs-contrib-hls.js"></script>
    <script>
        var player = videojs('example-video');
        player.play();
    </script>
</html>

申明:本文參考如下文章,取其可用部分捨棄不靠譜部分,自己動手搭建得到本文,後續會將推拉流移植到android設備,感謝。
http://blog.csdn.net/kingroc/article/details/50839994
http://www.jianshu.com/p/f0bf83ca3ea3#

發佈了46 篇原創文章 · 獲贊 22 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章