VOD模塊NGINX編譯部署 主要解決我那破電視的觀影需求、軟體裝不了又不想掏錢看線上廣告;U盤也沒法播、沒幾個相容的解碼軟體,五六年前的電視買的是真坑爹,我又不會刷機,那索性用廢筆記本裝linux整個nginx-vod模塊整個音視頻鏈接,電視上用短小精悍的VLC觀影。 下包 mkdir /usr/ ...
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;
}