為什么用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 id="player">
Loading...
</div>
<script type="text/javascript">
jwplayer("player").setup({
"flashplayer": "http://www.lofty888.cn/jwplayer.flash.swf", //player.swf文件的uri
"file": "http://www.lofty888.cn/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://www.lofty888.cn/video/demo.html
這樣一個簡單的視頻點播服務器就完成了,其它的需求自行擴展即可。