VOD模块NGINX编译部署
主要解决我那破电视的观影需求、软件装不了又不想掏钱看线上广告;U盘也没法播、没几个兼容的解码软件,五六年前的电视买的是真坑爹,我又不会刷机,那索性用废笔记本装linux整个nginx-vod模块整个音视频链接,电视上用短小精悍的VLC观影。
下包
mkdir /usr/local/nginx/tmp/client/ -p
useradd -s /bin/nologin -M nginx
mkdir /opt/source_package -p
wget https://nginx.org/download/nginx-1.24.0.tar.gz -O /opt/source_package
wget https://codeload.github.com/kaltura/nginx-vod-module/zip/refs/tags/1.31 -O /opt/source_package
wget https://codeload.github.com/winshining/nginx-http-flv-module/tar.gz/refs/tags/v1.2.10 -O -O /opt/source_package
解包
cd /opt/source_package
unzip nginx-vod-module-1.31.zip
tar -xvf nginx-1.24.0.tar.gz
tar -xvf nginx-http-flv-module-1.2.10.tar.gz
编译
如果模块编译报错,尝试其他版本重新编译,因为编译时会调用的内核函数,旧版本模块包调用的函数可能在内核中不存在,解决思路就是换包适应内核。
cd /opt/source_package/nginx-1.24.0
nginx_install_Dir=/usr/local/nginx
./configure --prefix=${nginx_install_Dir}
--sbin-path=${nginx_install_Dir}/sbin/nginx
--conf-path=${nginx_install_Dir}/conf/nginx.conf
--error-log-path=${nginx_install_Dir}/log/error.log
--http-log-path=${nginx_install_Dir}/log/access.log
--pid-path=${nginx_install_Dir}/run/nginx/nginx.pid
--lock-path=${nginx_install_Dir}/lock/nginx.lock
--user=nginx
--group=nginx
--with-http_ssl_module
--with-http_stub_status_module
--with-http_gzip_static_module
--with-http_gunzip_module
--with-file-aio
--http-client-body-temp-path=${nginx_install_Dir}/tmp/client/
--http-proxy-temp-path=${nginx_install_Dir}/tmp/proxy/
--http-fastcgi-temp-path=${nginx_install_Dir}/tmp/fcgi/
--http-uwsgi-temp-path=${nginx_install_Dir}/tmp/uwsgi
--http-scgi-temp-path=${nginx_install_Dir}/tmp/scgi
--with-pcre
--with-threads
--with-cc-opt="-O3"
--with-openssl-opt=enable
--with-http_flv_module
--with-http_mp4_module
--with-stream
--add-module=../nginx-vod-module-1.22
--add-module=../nginx-http-flv-module-1.2.10
NG配置文件参考
location ~/vod {
vod hls; # 协议使用hls模式
vod_mode local; # 访问模式指定为local模式
vod_align_segments_to_key_frames on; # 每个切片以关键帧开头
vod_manifest_segment_durations_mode accurate; # 精确显示每个切片的长度
add_header Access-Control-Allow-Headers '*';
add_header Access-Control-Expose-Headers 'Server,range,Content-Length,Content-Range';
add_header Access-Control-Allow-Methods 'GET, HEAD, OPTIONS';
add_header Access-Control-Allow-Origin '*';
alias /data/nginx_media;
}