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”: “/jwplayer.flash.swf”, //player.swf文件的uri
“file”: “/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 /video/demo.html
这样一个简单的视频点播服务器就完成了,其它的需求自行扩展即可。