網易視頻雲是網易傾力打造的一款基於雲計算的分佈式多媒體處理集羣和專業音視頻技術,提供穩定流暢、低時延、高併發的視頻直播、錄製、存儲、轉碼及點播等音視頻的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媒體服務器,可在網易視頻雲官方微博微信上查看,同時也歡迎大家進入網易視頻雲官網與技術人員進行交流。