前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx流媒体服务器搭建「建议收藏」

Nginx流媒体服务器搭建「建议收藏」

作者头像
全栈程序员站长
发布2022-11-01 13:03:18
3K0
发布2022-11-01 13:03:18
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

1.基础包下载

1.1 基础清单

代码语言:javascript
复制
版本
系统版本:CentOS 7.6
Nginx版本:1.20.1
nginx-vod-module版本:1.29

Nginx安装方面可以看我的另一篇文章Nginx笔记 注意各个组件版本,可能会产生一些版本冲突

1.2 nginx-vod-module下载

nginx点播模块,支持自动切片等功能,详细可直接去项目Git

代码语言:javascript
复制
wget https://github.com/kaltura/nginx-vod-module/archive/refs/tags/1.28.tar.gz

1.3 libfdk-acc下载(可选)

此库以支持倍速输出、视频音轨分离等功能

代码语言:javascript
复制
wget https://github.com/mstorsjo/fdk-aac/archive/refs/tags/v2.0.2.tar.gz

1.4 ffmpeg下载(可选)

代码语言:javascript
复制
wget https://ffmpeg.org/releases/ffmpeg-5.0.1.tar.gz

2.给Nginx加装模组

2.1 安装libfdk-acc(可选)

代码语言:javascript
复制
# 解压
tar -zxvf libfdk-acc-你的版本.tar.gz

# 进入目录
cd libfdk-acc-你的版本

# 生成配置
./autogen.sh

# 如果出现 autoreconf相关错误 为缺少依赖错误
# CentOS7.6及以上版本可直接yum安装依赖
yum install autoconf automake libtool

# 如果系统版本过低建议升级版本或者手动安装
# http://mirrors.kernel.org/gnu/autoconf/

# 依赖安装完毕重新生成配置
./autogen.sh

# 配置
./configure --enable-shared

# 编译
make

# 安装
make install

2.2 安装ffmpeg(可选)

代码语言:javascript
复制
# 解压
tar -zxvf ffmpeg-你的版本.tar.gz

# 进入目录
cd ffmpeg-你的版本

# 编译
./configure --enable-shared --enable-libfdk-acc

# 如果报错nasm或者yasm未找到或版本过低,需要安装依赖
# CentOS7.6可使用yum安装
yum install nasm

# 如果系统版本过低,需手动安装
# https://www.nasm.us/pub/nasm/releasebuilds/

# 如果出现警告 using libfdk without pkg-config 需要配置PKG_CONFIG_PATH路径
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

# 检查是否配置成功
echo $PKG_CONFIG_PATH

# 重新配置
./configure --enable-shared --enable-libfdk-acc

# 编译
make

# 安装
make install

2.3 安装Nginx

进入Nginx编译目录(此处生产环境,不方便部署可搜索Nginx动态编译)

代码语言:javascript
复制
# 重新配置Nginx
./configure --prefix=安装路径 --with-http_stub_status_module --with-http_gzip_static_module --with-http_gunzip_module --with-file-aio --with-threads --with-cc-opt="-O3" --with-http_ssl_module --with-openssl-opt=enable --with-http_mp4_module --with-stream --add-module=vod模块路径/nginx-vod-module-master

# 编译
make

# 安装
make install

Tips:如果安装过程中出现问题,可去查看各模块项目git的 issues查找是否有相似错误及解决方案

3.配置Nginx

代码语言:javascript
复制
worker_processes  1;
events { 

worker_connections  1024;
}
http { 

include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;
server { 

listen       80;
server_name  localhost;
autoindex on; # 开启目录索引
location /vod { 

vod hls; # 开启vod模块
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 /media; # 视频存放路径
}
location /data { 

alias /media; # 目录索引地址
}
# 访问以mp4结尾资源可直接播放
location ~* /data/.*\mp4 { 

rewrite ^/data/(.*)\.(mp4) /$1.$2 break;
root /media;
mp4;
}
location / { 

root   html;
index  index.html index.htm;
}
#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;
}
}
}

4.上传视频测试

4.1 上传视频

存在一些MP4视频由于各种奇奇怪怪的原因,可能会导致播放不出来 使用WinSCP等工具,上传视频到服务器,如采用以上配置,视频上传至/media

4.2 测试地址

拉流地址: http://服务器IP/vod/视频.mp4/index.m3u8 网页播放测试 http://服务器IP/data/视频.mp4

4.3 错误解决

此时可以进入nginx目录中logs查看日志 400错误 一般是文件格式问题,可根据日志中错误进行搜索 404错误 一般是配置或者视频文件存放位置错误,可根据日志中错误进行搜索

5.流媒体服务器拓展

发现了一款基于GO的开源流媒体服务器开发框架Monibuca可以了解一下~

6.参考资料

Nginx下载网址:http://nginx.org/en/download.html nginx-vod-module:https://github.com/kaltura/nginx-vod-module libfdk-aac:https://github.com/mstorsjo/fdk-aac ffmpeg:https://ffmpeg.org/download.html Monibuca https://m7s.live/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/204019.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.基础包下载
    • 1.1 基础清单
      • 1.2 nginx-vod-module下载
        • 1.3 libfdk-acc下载(可选)
          • 1.4 ffmpeg下载(可选)
          • 2.给Nginx加装模组
            • 2.1 安装libfdk-acc(可选)
              • 2.2 安装ffmpeg(可选)
                • 2.3 安装Nginx
                • 3.配置Nginx
                • 4.上传视频测试
                  • 4.1 上传视频
                    • 4.2 测试地址
                      • 4.3 错误解决
                      • 5.流媒体服务器拓展
                      • 6.参考资料
                      相关产品与服务
                      云点播
                      面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化的高品质媒体服务。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档