HLS协议之nginx-hls-多码率测试环境搭建

运行环境:ubuntu 20.04

时间:2024年10月26日

环境更新

sudo apt-get update
sudo apt-get install build-essential libtool  libpcre3 libpcre3-dev  zlib1g-dev  openssl

下载nginx

wget http://nginx.org/download/nginx-1.19.2.tar.gz
tar xvzf nginx-1.19.2.tar.gz
cd nginx-1.19.2/
./configure --prefix=/usr/local/rtmp-nginx --with-http_ssl_module --add-module=/home/jbj/zvmdia/nginx/nginx-http-flv-module
 sudo make -j 8
 sudo make install
 最终安装到⽬录:
ls /usr/local/rtmp-nginx/


sudo chown -R jbj:root .
sudo chmod  -R 777 .

nginx配置测试

1.启动nginx

2.ffmpeg 推流,nginx会监听到推流 进行application live转码出多个高低码流文件

 ffmpeg -re -i  time.mp4  -vcodec copy -acodec copy  -f flv -y  rtmp://127.0.0.1/live/jbj

3.ffplay 拉流播放

ffplay   rtmp://127.0.0.1/live/jbj
或者使用vlc 访问其他码流
http://127.0.0.1:8081/hls/jbj.m3u8
http://127.0.0.1:8081/hls/jbj_low/index.m3u8
http://127.0.0.1:8081/hls/jbj_hi/index.m3u8

nginx配置文件

/tmp/hls 转码文件目录

宽带和码率不匹配时,建议提示用户手动切换。因为网络抖动会导致频繁切换,最终观影体验极差。

cpp 复制代码
user root;
# 关闭 Daemon 进程
daemon off;

# 关闭 Master 进程
master_process off;

# 设置日志级别
error_log /tmp/error.log debug;

events {
    worker_connections 1024;
}

rtmp {
    server {
        listen 1935;
        chunk_size 4000;

        # Live 应用配置
        application live {
            live on;

            # 使用 FFmpeg 进行转码并输出多码率 FLV 流
            exec /usr/bin/ffmpeg -i rtmp://localhost/live/$name 
                -c:a copy -c:v libx264 -b:v 300K -g 30 -s 720x420  -f flv rtmp://localhost/hls/$name_hi 
                -c:a copy -c:v libx264 -b:v 200K -g 30 -s 462x254 -f flv rtmp://localhost/hls/$name_mid 
                -c:a copy -c:v libx264 -b:v 100K -g 30 -s 230x128 -f flv rtmp://localhost/hls/$name_low;
        }

        # HLS 应用配置
        application hls {
            live on;
            hls on;
            hls_path /tmp/hls;
            hls_nested on;
            hls_fragment 2s;
            hls_playlist_length 6s;

            # 配置不同码率的 HLS 流
            hls_variant _hi  BANDWIDTH=350000;
            hls_variant _mid BANDWIDTH=250000;
            hls_variant _low BANDWIDTH=150000;
        }
    }
}

http {
    server {
        listen 8081;

        # 默认 Web 服务根目录
        location / {
            root html;
            index index.html index.htm;
        }

        # HLS 文件访问配置
        location /hls {
            types {
                application/vnd.apple.mpegusr m3u8;
                video/mp2t ts;
            }
            alias /tmp/hls;
            add_header Cache-Control no-cache;
        }
    }
}
相关推荐
看山还是山,看水还是。1 小时前
Nginx 的 Http 模块介绍(中)
android·运维·网络·nginx·http
、十一、1 小时前
Linux中ES的安装
linux·运维·elasticsearch
不甘平凡的蜜蜂1 小时前
第三十三篇:TCP协议如何避免/减少网络拥塞,TCP系列八
运维·网络·网络协议·tcp/ip·计算机网络·智能路由器
风虎云龙科研服务器2 小时前
GPU 服务器:高性能计算的核心驱动力
运维·服务器
风吹落叶花飘荡2 小时前
从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)
服务器·vue.js·nginx
神技圈子2 小时前
【linux经典工具】作为一个合格的开发人员怎能不会tmux
linux·运维·服务器
龙萱坤诺2 小时前
AI自动评论插件V1.3 WordPress插件 自动化评论插件
运维·人工智能·自动化
weixin_448350502 小时前
探索自动化数据清洗技术的前沿趋势
大数据·运维·自动化·数据治理·数据提取
Bold!2 小时前
最新ubuntu22.04 下列软件包有未满足的依赖关系 解决方案
linux·运维·服务器
pyliumy3 小时前
docker的安装配置与基本简单命令
运维·docker·容器