1. 程式人生 > >將nginx作為視訊點播伺服器

將nginx作為視訊點播伺服器

流媒體伺服器

流媒體指以流方式在網路中傳送音訊、視訊和多媒體檔案的媒體形式。相對於下載後觀看的網路播放形式而言,流媒體的典型特徵是把連續的音訊和視訊資訊壓縮後放到網路伺服器上,使用者邊下載邊觀看,而不必等待整個檔案下載完畢。由於流媒體技術的優越性,該技術廣泛應用於視訊點播、視訊會議、遠端教育、遠端醫療和線上直播系統中。作為新一代網際網路應用的標誌,流媒體技術在近幾年得到了飛速的發展。

流媒體播放方式

HTTP方式 這種方式要下載FLV視訊檔案到本地播放,一旦FLV視訊檔案下載完成,就不會消耗伺服器的資源和頻寬,但是拖動功能沒有RTMP/RTMP流媒體方式強大,很多視訊網站都是用HTTP方式實現的,如:YouTube,土豆,酷6等

RTMP/RTMP流媒體方式 這種方式不用下載FLV視訊檔案到本地,可以實時的播放flv檔案,可以任意拖拽播放進度條,但是比較消耗伺服器的資源。

安裝

nginx 1.1.3之後已經預設支援mp4,flv模組,無須第三方模組支援。我這裡使用的是docker容器:

docker run -d --name nginx  -p 80:80 -v ~/opt/local/nginx/logs:/var/log/nginx -v ~/opt/local/nginx:/etc/nginx nginx

將容器內的nginx配置目錄(即/etc/nginx)掛載到了本機目錄方便我們對配置檔案進行修改。

配置檔案

在~/opt/local/nginx/conf.d下新建一個mp4.conf,加入如下配置

  1 server {
  2     listen 80 ;
  3     server_name localhost;
  4     root  /etc/nginx/mp4;
  5     limit_rate 256k;
  6 
  7     location ~ \.flv$ {
  8         flv;
  9     }
 10 
 11     location /video/ {
 12         rewrite ^/video/(.*)$ /jwplayer-7.10.4/$1 last;
 13     }
 14 
 15     location ~ \.mp4$ {
 16         mp4;
 17 #       mp4_buffer_size    1m;
 18 #       mp4_max_buffer_size  5m;
 19         limit_rate_after 5m;
 20         limit_rate 100k;
 21 #       limit_conn perip 1;
 22     }
 23  }

關於nginx的基本配置不再贅述,(可以參考我的部落格nginx進階-配置檔案)將由flv與mp4結尾的uri交給對應的模組。隨便找一個mp4或flv格式的視訊放在root目錄下(配置虛擬容器中的路徑/etc/nginx/mp4,對映到真實機器的路徑時~/opt/local/nginx/mp4)現在我們搭配jwplayer進行視訊的點播。

下載jwplayer,我這裡使用的7.10.4的免費版本,解壓後得到如下目錄 在這裡插入圖片描述 這裡注意兩個檔案,一個是jwplayer.flash.swf,還有一個就是jwplayer.js檔案。官方已經貼心的為我們準備好了demo,打卡demo.html進行一些修改:

<script type="text/javascript" src="jwplayer.js"></script>
<script>jwplayer.key="4sNBpozdkb2Gv+IYeWyd+CID9tW2NXdJE5GeSg==";//修改為自己的key</script>
<div id="player">
Loading...
</div>
<script type="text/javascript">
jwplayer("player").setup({
	"flashplayer": "http://localhost/jwplayer.flash.swf", //player.swf檔案的uri
	"file": "http://localhost/1.mp4",//視訊檔案的伺服器uri
	"aspectratio": "16:9",//播放器自適應比例
	"height": "360",//播放器高度
	"type":"mp4",//播放檔案型別(可選)
	"title": "測試標題",//標題(可選)
	"description": "測試視訊描述",//描述(可選)
	"image": "http://ww4.sinaimg.cn/large/b6839357jw1e3val80tknj20dw099jsb.jpg",//視訊封面(可選)
	"repeat":"true",//重複播放(留空則不重複播放)
	"autostart":"true",//自動播放(留空則不啟用自動播放)
});
</script>

重點關注javascript標籤中的內容,請配合註釋一起食用。

效果

這樣一個簡單的視訊點播伺服器就完成了,其它的需求自行擴充套件即可。接下來有空會研究一下RTMP流媒體伺服器的搭建(懶,逃~~)