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

Nginx流媒体服务器搭建「建议收藏」1.基础包下载1.1基础清单版本系统版本:CentOS7.6Nginx版本:1.20.1nginx-vod-module版本:1.29Nginx安装方面可以看我的另一篇文章Nginx笔记注意各个组件版本,可能会产生一些版本冲突1.2nginx-vod-module下载nginx点播模块,支持自动切片等功能,详细可直接去项目Gitwgethttps://github.com/kaltura/nginx-vod-module/archive/refs/tags/1.28.tar.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1.基础包下载

1.1 基础清单

版本
系统版本:CentOS 7.6
Nginx版本:1.20.1
nginx-vod-module版本:1.29

Jetbrains全家桶1年46,售后保障稳定

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

1.2 nginx-vod-module下载

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

wget https://github.com/kaltura/nginx-vod-module/archive/refs/tags/1.28.tar.gz

1.3 libfdk-acc下载(可选)

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

wget https://github.com/mstorsjo/fdk-aac/archive/refs/tags/v2.0.2.tar.gz

1.4 ffmpeg下载(可选)

wget https://ffmpeg.org/releases/ffmpeg-5.0.1.tar.gz

2.给Nginx加装模组

2.1 安装libfdk-acc(可选)

# 解压
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(可选)

# 解压
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动态编译)

# 重新配置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

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.net/204019.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何关闭占用的端口程序[通俗易懂]

    如何关闭占用的端口程序[通俗易懂]1、确认被占用的端口号,如:80、443等端口2、查看占用上述端口的程序id;步骤:a、快捷键win+R或者点击运行,输入cmd,出现cmd命令框;b、输入netstat-nao|findstr443,查看第二列ip后面数字为443的程序,最后一列是PID(程序id);——即查看含有443字符串的程序;3、关闭进程a、记录端口号为443的PID值,打开任

    2022年7月20日
    83
  • 什么是hard code

    什么是hard code写死 英文称 hardcode hardcoding 指的是在软体实作上 把输出或输入的相关参数 例如 路径 输出的形式 格式 直接写死在原始码中 而非在执行时期由外界指定的设定 资源 资料 或者格式做出适当回应

    2025年8月2日
    8
  • python输出结果换行_浅谈Python3中print函数的换行「建议收藏」

    最近看了看Python的应用,从入门级的九九乘法表开始,结果发现Python3.x和Python2.x真的是有太大的不同之处,就比如这里的换行处理,怕忘记先记下来,好了,咱移步下文——Python2.X中的代码:1234567891011121314151617#!/usr/bin/envpython#-*-coding:utf-8-*-__author__=’****’classPr…

    2022年4月16日
    274
  • AbstractInterceptor和MethodFilterInterceptor的区别

    AbstractInterceptor和MethodFilterInterceptor的区别1.AbstractInterceptor是Interceptor的子类。2.MethodFilterInterceptor是AbstractInterceptor的子类,你需要实现的拦截器支持方法过滤性,就继承MethodFilterIntercepter这个类.默认的情况下,拦截器会拦截Action中的所有的方法,这里不包括setter或getter方法.这时就可以使用方法

    2022年5月14日
    40
  • clover默认引导mac(clover win10引导)

    搞定Clover引导的Win&Mac双系统系统迁移至SSD作者:毛毛卷日期:2018-07-20字体大小:小中大从发完贴到现在总算搞定了,具体操作记录如下:由于当年折腾双系统的时候就经历了很多波折而且一般是默认启动MAC而我却是WIN10所以本身的要求和实现方法就有点特殊因此最终并没有偷懒用分区克隆的方法还是按部就班的进行首先把自己提的几个问题回答一下吧首先大概试了A…

    2022年4月11日
    39
  • C语言之strstr函数

    C语言之strstr函数【FROMMSDN&&百科】原型:char*strstr(constchar*str1,constchar*str2);#include找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针。Returnsapointertothefirstoccurrence

    2022年6月25日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号