当前位置: 首页 > news >正文

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-modulesudo make -j 8sudo 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 转码文件目录

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

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;}}
}

http://www.lryc.cn/news/472745.html

相关文章:

  • 函数式接口与回调函数实践
  • Windows11系统如何使用自带的录音、录屏工具?
  • 使用 web (vue 和DRF))实现 模拟一个IDE 功能思路
  • 智航船舶租赁综合管理系统
  • 统信UOS下启动图形界面应用工具monitor报JAVA相关错:An error has occurred. See the log file
  • N-154基于springboot酒店预订管理系统
  • 微信小程序如何实现地图轨迹回放?
  • vscode的一些使用心得
  • Python金色流星雨(完整代码)
  • [山河CTF 2024] week3
  • Java集合常见面试题总结(5)
  • 牛客网刷题(3)(Java的几种常用包)
  • PyTorch nn.Conv2d 空洞卷积
  • 像素、分辨率、PPI(像素密度)、帧率的概念
  • 两步GMM计算权重矩阵
  • leetcode452. 用最少数量的箭引爆气球
  • 【Android】使用TextView实现按钮开关代替Switch开关
  • (49)MATLAB实现迫零均衡器原理与代码
  • 滚柱导轨出现异常损坏的原因
  • 架构师考试系列(6)论文专题:论分布式架构设计
  • leetcode hot100【LeetCode 230. 二叉搜索树中第K小的元素】java实现
  • 从0开始深度学习(23)——图像卷积
  • 编程小白如何成为大神
  • JetCache启动循环依赖分析
  • 【科研绘图】3DMAX管状图表生成插件TubeChart使用方法
  • 基于SSM土家风景文化管理系统的设计
  • C++超强图片预览器
  • 网络搜索引擎Shodan(2)
  • 【Tableau】
  • 分类与有序回归