网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PAAS服务,在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。现在,网易视频云的技术专家给大家分享一则技术文:如何搭建MP4媒体服务器。
随着媒体技术的发展,以及硬件设备的普及和移动设备的触角延伸之社会各个角落,人们可以随时随地产生信息。其中,多媒体信息成为了人们信息分享的重要方式。如何让这些的信息能被千差万别的设备观看,视频编码技术成为一种切实可行的方案。网易视频云在这里分享视频编码技术——如何搭建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编码,否则,将出现只有只见其形不闻其声的情况。
另有两篇姊妹篇:如何搭建视频转码集群以及如何搭建FLV媒体服务器,可在网易视频云官方微博微信上查看,同时也欢迎大家进入网易视频云官网与技术人员进行交流。