网易视频云分享:如何搭建MP4媒体服务器
流媒体,网易视频云,技术开发,云计算2016-05-26
随着媒体技术的发展,以及硬件设备的普及和移动设备的触角延伸之社会各个角落,人们可以随时随地产生信息。其中,多媒体信息成为了人们信息分享的重要方式。如何让这些的信息能被千差万别的设备观看,视频编码技术成为一种切实可行的方案。网易视频云在这里分享视频编码技术——如何搭建MP4媒体服务器。
环境
操作系统:linux 2.6.32-5-amd64。Linux 版本即可。
服务器:nginx 1.3.3。nginx的版本可以更高。
客户端:jwplayer。或者任何播放器即可。
搭建步骤
安装nginx with nginx_mod_h264_streaming
1、 下载nginx 和nginx_mod_h264_streaming
wget http://nginx.org/download/nginx-1.3.3.tar.gz
git clone https://github.com/vivus-ignis/nginx_mod_h264_streaming.git
2、 解压
tar –xzvf nginx-1.3.3.tar.gz
3、 安装
cd nginx-1.3.3
#nginx_mod_h264_streaming为第三方模块。
./configure --prefix=/home/user/nginx_flv --add_module=nginx_mod_h264_streaming_2.2.7
4、 配置
#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;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main 'remoteaddr?remote_user [timelocal]"request" '
'statusbody_bytes_sent "$http_referer" '
'"httpuseragent""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 8088;
server_name localhost;
#charset koi8-r;
access_log logs/host.access.log main;
location / {
root /home/fs/video;
index index.html index.htm;
autoindex on;
location ~ \.mp4{
mp4;
}
}
#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;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
}
说明:绿色部分为配置MP4的部分。/home/fs/video目录为资源存放路径,包括jwplayer以及测试用的视频文件都存放于该目录。
5、 配置jwplayer服务器。
下载开源的jwplayer,比如mediaplayer-5.10。解压之后将player.swf以及jwplayer.js置于/home/fs/video。并将测试视频 zyd.flv 也置于/home/fs/video。
6、 测试
在浏览器中输入 http://hostip:8080/player.swf?type=http&file=zyd.mp4
可以随意拖动进度条,可以看到视频正常播放。
其他
1、 Mp4文件要想用swf播放器正常播放,必须对mp4文件的moov头信息前移,否则,会出现无法识别mp4文件的问题。
2、 如果视频是使用ffmpeg处理出来的,必须将moov头部前移到视频的头部。因为ffmpeg编码完视频后是将视频的moov信息写入视频的末尾。如果moov信息在视频的末尾带来的后果是,Flash player需要加载所有视频才能播放。
3、 如果mp4文件不含moov信息头,qtfaststart在做信息头前移时,会将cpu使用率撑到99%。因此必须解决该问题。
4、 nginx_mod_264_streaming是CCL的软件。可以用在非商业环境下。如果要在商业环境下使用需要购买许可。
5、 在flash player中播放mp4文件,视频的格式必须是h264编码。否则,flash player无法识别。音频必须为aac编码,否则,将出现只有只见其形不闻其声的情况。