hls转流服务的nginx配置和一些脚本

前言

        当今,流媒体服务已成为互联网中不可或缺的重要组成部分。HLS(HTTP Live Streaming)作为一种流媒体传输协议,被广泛应用于视频直播、点播等应用场景中。而Nginx作为一款高性能的Web服务器,也可以被用于构建HLS转流服务。

        在这篇博客中,我们将介绍:

        如何使用Nginx配置HLS转流服务,并提供一些Ffmpeg的相关脚本,这些脚本可用于自动化管理转流服务

        并且,先前已经给出流媒体服务的搭建了:

利用Nginx搭建流媒体服务【centos/windows】_nginx流媒体服务器配置-CSDN博客

nginx配置

        这里以windows系统为例,linux也没啥区别,我将hls转流片段留在如下路径

        【C:/Users/Administrator/FISH/nginx/www/hls】


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;add_header Access-Control-Allow-Origin *;#charset koi8-r;#access_log  logs/host.access.log  main;# The location is determined by the root config.# If your m3u8 path is saved in C:/Users/Administrator/FISH/nginx/www/hls,# you can also choose the location [/www/hls] with the root [C:/Users/Administrator/FISH/nginx].location /hls {types {application/vnd.apple.mpegurl m3u8;video/mp2t ts;}root C:/Users/Administrator/FISH/nginx/www;expires -1;add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Headers X-Requested-With;add_header Access-Control-Allow-Methods GET,POST,OPTIONS;} 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;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# 服务代理# 将本地服务从别的端口和地址弄出来server {listen       8000;server_name  proxy_hls;add_header Access-Control-Allow-Origin *;# 自定义路径location /hls/m3u8 {proxy_pass http://127.0.0.1/hls;}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}# 使用rtmp插件,构建流媒体服务,对多余的切片进行删除和优化视频
rtmp {server {listen 19351;publish_time_fix on;# 允许播放和接收视频流application myapp {live on; #stream on live allowallow publish all; # control access privilegeallow play all; # control access privilege}application hls {live on;hls on;  #这个参数把直播服务器改造成实时回放服务器。hls_path C:/Users/Administrator/FISH/nginx/www/hls;        #切片视频文件存放位置。wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。hls_fragment 10s; #每个视频切片的时长。hls_playlist_length 30s; #总共可以回看的事件,这里设置的是1分钟。hls_continuous on; #连续模式。hls_cleanup on; #对多余的切片进行删除。hls_nested on; #嵌套模式。}}
}

转流服务管理脚本

        1、转流服务脚本

@echo off:loop
ffmpeg -re -rtsp_transport tcp -i rtsp://admin:52996@172.6.6.6:554 -vf "scale=640:480" -r 15 -c:a aac -strict -2 -f hls -hls_list_size 3 -hls_time 15 -hls_flags delete_segments -segment_list_flags +delete_segments C:/Users/Administrator/FISH/nginx/www/hls/004.m3u8
IF %ERRORLEVEL% neq 0 (echo "ffmpeg命令执行失败"timeout /t 4goto loop
)
goto loop

        这是一个bat脚本,目的是将【rtsp://admin:52996@172.6.6.6:554】的rtsp视频流按照【640:480】的比例转流为m3u8视频,并以【004.m3u8】的命名存储在【C:/Users/Administrator/FISH/nginx/www/hls】目录中,为了防止转流服务异常中断,这里设置了循环,在每次失败后将在四秒后重新启动。

        注:摄像头视频RTSP流默认为554,但不排除有用8080或其他端口、或者http协议播放的

        2、定时杀死转流服务

        因为在转流过程中老是会出现不可预料的问题,导致ffmpeg转流服务进程持续运行,但就是类似卡死一样,处于挂起状态,这里给出一种杀死转流服务的脚本(可与【1】配套使用),请联系实际使用,仅供参考

@echo off
taskkill /F /IM ffmpeg.exe

        3、清理过多的ts文件

        考虑到有些服务器装不了rtmp模块,无法自动清理ts文件。这里给出脚本,用于清理存在超过24小时的文件。

@echo offset "hls_dir=C:\Users\Administrator\FISH\nginx\www\hls"
set "max_age_hours=24"forfiles /P "%hls_dir%" /S /M *.ts /D -%max_age_hours% /C "cmd /c if @isdir==FALSE del @path"

       

另给出一个小tip:

         前端hls.js暂没找到办法播放【复合流】hls,因此需要在摄像头后台将【复合流】视频更换为【视频流】

        主码流无法更改视频流设置的,可以试试更改子码流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《每天十分钟》-红宝书第4版-集合引用类型(二)

接着奏乐接着抄,续着上篇的数组 迭代器方法 const a ["zhangsan", "lisi", "wangwu"]; // 因为这些方法都返回迭代器,所以可以将它们的内容 // 通过 Array.from()直接转换为数组实例 const aKeys Array.from(a.keys(…

cmake-将源文件编译为可执行文件

文章目录 准备工作创建cmake文件编译源代码需要的文件不在同一个文件夹的情况 准备工作 首先我们准备三个文件 add.h int add(int a,int b);add.cpp int add(int a,int b) {return ab; }main.cpp #include "add.h" #include <iostream> int main() {in…

Multi-Concept Customization of Text-to-Image Diffusion——【代码复现】

本文是发表于CVPR 2023上的一篇论文&#xff1a;[2212.04488] Multi-Concept Customization of Text-to-Image Diffusion (arxiv.org) 一、引言 本文主要做的工作是对stable-diffusion的预训练模型进行微调&#xff0c;需要的显存相对较多&#xff0c;论文中测试时是在两块GP…

ssh远程登录协议

目录 一、ssh协议定义及特点 &#xff08;一&#xff09;ssh协议简介 &#xff08;二&#xff09;ssh协议的主要特点 二、ssh传输原理 三、sshd服务 &#xff08;一&#xff09;配置文件 &#xff08;二&#xff09;基本用法 1.直接连接 2.连接指定用户 3.指定端口号…

设计模式之策略模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

谷歌推广该选择SEO还是Ads?谷歌技巧分享及实战

众所周知&#xff0c;谷歌是全球最大线上搜索引擎&#xff0c;已经成为消费者在进行线上购物时不可或缺的重要搜索工具&#xff0c;全球用户每天在谷歌上有着几十亿次的搜索行为。 所以现在越来越多的跨境丝氨酸选择在Google上投放广告&#xff0c;这也给卖家带来了非常精准的…

解决防爬虫机制方法(一)

最近为了完成学校的大数据的作业&#xff0c;老师要我们爬一个的网站&#xff0c;里面有还算不错的防爬机制&#xff0c;忙活了几天&#xff0c;总结出一些常见的防爬机制的应对方法&#xff0c;方法均来自个人实战总结&#xff0c;非专业爬虫角度分析 1.响应时间过快 1.1网速…

十分钟教你在 k8s 中部署一个前后端应用

好多开发人员&#xff0c;尤其是没接触过 k8s 的人员对如何在k8s中部署一个 前后端应用很模糊&#xff0c;不知如何下手&#xff0c;所以本篇讲一下如何快速在 k8s 部署一个前后端应用&#xff0c;让大家对k8s有个快速认识 前置依赖 k8s集群&#xff0c;如果没有安装&#xff0…

什么是RoPE-旋转位置编码?

RoPE位置编码是大模型中最常见的位置编码之一。像是谷歌的PaLM和meta的LLaMA等开源大模型都是RoPE位置编码&#xff0c;那么RoPE有什么特点呢&#xff1f; 本文将介绍如下内容&#xff1a; RoPE旋转位置编码概要什么是位置编码&#xff1f;RoPE及其特点总结 一、RoPE旋转位置…

refs传值

父组件和子组件同时展示 父组件&#xff1a; <div><el-button click"showdialog">点击</el-button><div><UploadFile ref"child"></UploadFile></div></div>created () {this.init(); }, methods:{init …

stm32学习笔记:DMA

每个DMA通道硬件触发源是不一样的&#xff0c;要使用某个外设的硬件触发源&#xff0c;就必须使用它连接的那个通道 12个独立可配置的通道&#xff1a;DMA1(7个通道)&#xff0c;DMA2(5个通道) 每个通道都支持软件触发和特定的硬件触发 C8T6 DMA资源&#xff1a;DMA1 &#xff…

Python自动化我选DrissionPage,弃用Selenium

DrissionPage 是一个基于 python 的网页自动化工具。 它既能控制浏览器&#xff0c;也能收发数据包&#xff0c;还能把两者合而为一。 可兼顾浏览器自动化的便利性和 requests 的高效率。 它功能强大&#xff0c;内置无数人性化设计和便捷功能。 它的语法简洁而优雅&#x…

数据库和表的操作

文章目录 前言一、库的操作创建数据库字符集和校验规则操纵数据库查看数据库显示创建语句修改数据库删除数据库备份和恢复数据库还原查看连接情况 二、表的操作创建表查看表结构修改表修改表名添加一列修改某一列属性删除某一列 删除表 前言 一、库的操作 创建数据库 语法&am…

【Python机器学习】分类器的不确定估计——决策函数

scikit-learn接口的分类器能够给出预测的不确定度估计&#xff0c;一般来说&#xff0c;分类器会预测一个测试点属于哪个类别&#xff0c;还包括它对这个预测的置信程度。 scikit-learn中有两个函数可以用于获取分类器的不确定度估计&#xff1a;decidion_function和predict_pr…

day06

1.八大基本数据类型整型: byte short int long 浮点: double float字符: char布尔: boolean2.声明变量的语法格式数据类型 变量名字 初始化的值; 3.使用for循环打印等腰三角形for (int i 1; i < 4; i) {for (int j 1; j < 4 - i; j) {System.out.print(" &qu…

快速获取商品条码查询API接口python代码

商品条码查询API实现了对商品条码信息的快速获取和准确识别。这个接口在电子商务、分销溯源、商超服务等领域具有应用市场&#xff0c;通过此接口获取商品所包含的详细信息。 首先&#xff0c;使用数据平台该API接口需要先注册后申请此API接口。申请成功后使用个人中心的API秘…

计算机毕业设计----SSH电子相册管理系统

项目介绍 本项目分为普通用户与管理员两个角色&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登陆,用户信息管理,登陆密码修改等功能。 用户角色包含以下功能&#xff1a; 用户登陆,个人信息管理,相册管理,上传照片等功能。 环境需要 1.运行环境&#xff1a;最好…

高效办公:在文件夹名称左边插入关键字,提高文件管理效率

在繁忙的工作环境中&#xff0c;经常要处理大量的文件和文件夹。有效的文件管理是一个挑战&#xff0c;大量的文件和文件夹难以找到所需的资料。下面一起来看云炫文件管理器如何在文件夹名称左边批量插入关键字。 文件夹名称左边添加关键字前后对比图。 文件夹名称左边批量插…

P1379 八数码难题

题目描述 在 33 的棋盘上&#xff0c;摆有八个棋子&#xff0c;每个棋子上标有 1 至 8 的某一数字。棋盘中留有一个空格&#xff0c;空格用 0 来表示。空格周围的棋子可以移到空格中。要求解的问题是&#xff1a;给出一种初始布局&#xff08;初始状态&#xff09;和目标布局&…

linux服务器ftp部署

1、ftp服务安装 # 检查是否安装 1、查询安装列表 sudo systemctl list-unit-files --typeservice | grep ftp 2、查询ftp服务状态 sudo service vsftpd status 或者 sudo systemctl status vsftpd # yum安装&#xff0c;一般yum仓库都有ftp安装包 sudo yum install vsftpd # 启…