简单的视频上传、转码、点播系统和解决方案,用户上传视频后,使用ffmepg对视频进行转码,然后使用nginx和nginx rtmp模块提供视频点播功能
- 视频上传,利用文件块上传来支持续传(这里并没有计算文件md5验证,并且为了简化逻辑,不支持并发上传块文件,效率不高)
- 视频转码,利用ffmepg对视频进行转码(转成aac编码的音频和h264编码的视频),同时视频大小将被大大压缩(需要安装ffmepg)
- 视频点播,搭建加载nginx-rtmp-module模块的nginx,进行点播(安装带rtmp模块的nginx)
创建数据库,并执行项目中的vod.sql文件创建表,然后修改application-dev.yml中的数据库配置后即可运行
网上介绍安装的很多,这里只简单介绍我这边的安装,环境为centos。
git clone https://github.com/arut/nginx-rtmp-module.git
wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
wget http://nginx.org/download/nginx-1.8.1.tar.gz
tar -zxvf nginx-1.8.1.tar.gz
tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
yum -y install gcc-c++
yum -y install pcre-devel openssl openssl-devel
cd nginx-1.8.1
./configure --prefix=/usr/local/nginx
--with-http_ssl_module
--with-http_mp4_module
--add-module=/home/nginx-rtmp-module
--add-module=/home/nginx_mod_h264_streaming-2.2.7
make
sudo make install
在文件: h264源码目录/src/ngx_http_streaming_module.c 将如下部分注释掉:
/* TODO: Win32 */
if (r->zero_in_uri)
{
return NGX_DECLINED;
}
在文件: nginx源码目录/objs/Makefile中删除参数 -Werror
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
# 点播配置
rtmp {
server{
listen 1935;
chunk_size 4096;
application vod{
# 转码后视频存放的文件夹
play /usr/local/nginx/video;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 9999;
server_name video_server;
# 指向了视频存放的根目录
root /usr/local/nginx/video;
# 限制速率
limit_rate 512k;
location / {
root html;
index index.html index.htm;
}
location ~ \.mp4$ {
mp4;
}
#location ~ \.flv$ {
# flv;
#}
# 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;
}
}
}