回覆列表
-
1 # 大眾視野觀天下
-
2 # Java小虎
樓上的朋友關於nginx介紹的很多,我只總結下我認為它能被選型流媒體伺服器的重點。
簡單易用nginx中介軟體的安裝和配置,非常簡單,跨平臺,只需對配置檔案就行手動配置即可。
高效能流媒體要求的是實時接收和解碼處理,對效能要求的比較高,nginx的誕生就是為了輕量和高效能。首先,其底層直接呼叫了伺服器作業系統的了epoll多路複用機制。對併發請求的處理可以說達到了目前市場上所有主流中介軟體的極致。
功能強大nginx自帶了很多小功能來幫助我們處理好一個請求。我簡單說幾個常用的
頁面壓縮,負載均衡,限流降級,本地快取,lua指令碼支援。
在我來看,以上這些才是nginx的核心技術,也是它存在的最大價值。所以它的高效能,跨平臺,以及多功能支援,都是流媒體專案所需要的。
Nginx是一款自由的、開源的、高效能的HTTP伺服器和反向代理伺服器;同時也是一個IMAP、POP3、SMTP代理伺服器;Nginx可以作為一個HTTP伺服器進行網站的釋出處理,另外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>
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標籤中的內容,請配合註釋一起食用。
效果
訪問我們的nginx http://localhost/video/demo.html
這樣一個簡單的影片點播伺服器就完成了,其它的需求自行擴充套件即可。