JetsonNano学习(七)Nginx 搭建 HLS 直播服务器

news2024/11/19 18:31:57

文章目录

  • 一、使用 Nginx-rtmp-module 编译 Nginx
    • 下载 Nginx-rtmp-module
    • 安装 Nginx 依赖
    • 下载 Nginx
    • 编译 Nginx
  • 二、Nginx 配置文件
  • 三、启动 Nginx 服务
      • 方式一
        • 安装nginx初始化脚本、获取nginx初始化脚本
      • 方式二
        • 直接调用
  • 四、使用 RTMP 将视频推送到 Nginx
    • 安装FFmpeg
    • 捕获网络摄像头 /dev/video0 并将其流式传输到 Nginx
    • 流式传输文件示例视频.mp4
    • 流式传输另一个 rtmp 流
    • 浏览器获取视频流
  • 补充
    • OBS 推流
    • 检查 .m3u8 文件
    • 拉流


一、使用 Nginx-rtmp-module 编译 Nginx

首先,我们需要通过Nginx-rtmp-module编译Nginx,推荐使用sergey-dryabzhinsky,该仓库一直在被积极开发中,相比于arut具有更多的修复与改进。

下载 Nginx-rtmp-module

git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git	(Recommend)
git clone https://github.com/arut/nginx-rtmp-module.git					(original one)

安装 Nginx 依赖

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

下载 Nginx

从 Nginx下载网站 选择最新的Nginx版本下载。
例如 nginx-1.24.0 可通过 https://nginx.org/download/nginx-1.24.0.tar.gz 获取。

wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar -xf nginx-1.24.0.tar.gz
cd nginx-1.24.0

编译 Nginx

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module   # Pay attention to the nginx-rtmp-module Path
make -j 1		# 1: The number of CPUs on U PC to accelerate the compilation
sudo make install

二、Nginx 配置文件

# 备份 nginx.conf
sudo cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
# 配置 nginx.conf
sudo vim /usr/local/nginx/conf/nginx.conf
worker_processes  auto;
events {
    worker_connections  1024;
}

# RTMP configuration
rtmp {
    server {
        listen 1935; # Listen on standard RTMP port
        chunk_size 4000;

        application show {
            live on;
            # Turn on HLS
            hls on;
            # Make sure Pernission of Nginx to write
            hls_path /mnt/hls/;
            hls_fragment 3;
            hls_playlist_length 60;
            # disable consuming the stream from nginx as rtmp
            allow play all;
        }
    }
}

http {
    sendfile off;
    tcp_nopush on;
    aio on;
    directio 512;
    default_type application/octet-stream;

    server {
        listen 8080;
		#server_name ***.***.***.***;
        location / {
            # Disable cache
            add_header 'Cache-Control' 'no-cache';

            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';

            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }

            types {
                application/dash+xml mpd;
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }

            root /mnt/;
        }
    }
}

三、启动 Nginx 服务

方式一

安装nginx初始化脚本、获取nginx初始化脚本

wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx
sudo cp nginx /etc/init.d/
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults

sudo service nginx start
sudo service nginx stop

方式二

直接调用

# 开启
sudo /usr/local/nginx/sbin/nginx
# 关闭
sudo /usr/local/nginx/sbin/nginx -s stop

四、使用 RTMP 将视频推送到 Nginx

安装FFmpeg

sudo apt-get install ffmpeg

捕获网络摄像头 /dev/video0 并将其流式传输到 Nginx

ffmpeg -re -f video4linux2 -i /dev/video0 -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -f flv rtmp://localhost/show/stream

流式传输文件示例视频.mp4

ffmpeg -re -i example.mp4 -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 -f flv rtmp://localhost/show/stream

流式传输另一个 rtmp 流

ffmpeg -i rtmp://example.com/appname/streamname -vcodec libx264 -vprofile baseline -acodec aac -strict -2 -f flv rtmp://localhost/show/stream

浏览器获取视频流

http://localhost:8080/hls/stream.m3u8

补充

OBS 推流

在这里插入图片描述

检查 .m3u8 文件

在这里插入图片描述

拉流

在这里插入图片描述

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

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

相关文章

行业分析——半导体行业

半导体行业是现代高科技产业和新兴战略产业,是现代信息技术、电子技术、通信技术、信息化等产业的基础之一。我国政府先后制定了《中国集成电路产业发展规划》和《中国人工智能发展规划》,明确提出要支持半导体和人工智能等产业的发展,为半导…

xs _webmsxyw 纯算法还原盗用代码请注明出处搬来搬去真的很下头!

本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 最新版 x-s 没露任何版权请审核员认真对待谢谢。 【2023.05.22】 更新全站接口通用 …

【ARM位段地址分配】STM32 struct 位段内存分配位置问题

因为需要将 7位地址位 和 1位读写标志位 进行组合,想到了用 struct 和 union 的方法。 说明:作为自己测试用,使用硬件STM32F407ZET6 本篇文章仅对位段操作再ARM芯片上存储空间位置分配的探究,供给作为需要确定位段操作分配内存…

我出版了一本关于TikTok电商运营的书

回首2020年初,第一次在手机上下载TikTok的那个下午,我并没有意识到,未来三年多这个词会充满我的工作与生活。 那其实是非常幸福的一段时间,对TikTok的期待没有那么功利,每天刷一刷TikTok中的视频,再随手拍…

【1080. 根到叶路径上的不足节点】

来源:力扣(LeetCode) 描述: 给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。 假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小…

『手撕 Mybatis 源码』04 - 创建 sqlSession

创建 sqlSession 创建 openSession 对象 当获取 SqlSessionFactory 之后,就可以开始获取 SqlSession 对象 public class MybatisTest {Testpublic void test1() throws IOException {...// 3.问题:openSession()执行逻辑是什么?// 3. (1) …

c++学习——引用

引用 **引用的语法****引用的注意事项****数组的引用****引用的本质****尽量用const来代替define****指针的引用** 1.引用是做什么:和C语言的指针一样的功能,并且使语法更加简洁 2.引用是什么∶引用是给空间取别名 引用的语法 #define _CRT_SECURE_NO_WARNINGS #include <i…

星戈瑞Sulfo-CY7 NHS ester标记带氨基的荧光Cyanine7-NHS

Sulfo-CY7 NHS ester是一种常用的蛋白质标记试剂&#xff0c;是一种高度稳定的荧光染料&#xff0c;能够被用于各种细胞成像实验中。利用这种染料&#xff0c;科学家们可以标记细胞膜、细胞核、细胞器等&#xff0c;从而观察细胞的各种结构和功能。 产品名称&#xff1a;水溶性…

似然(likelihood)、极大似然、对数似然、最大后验等

1 似然 设总体X服从分布P(x&#xff1b;θ)&#xff08;当X是连续型随机变量时为概率密度&#xff0c;当X为离散型随机变量时为概率分布&#xff09;&#xff0c;θ为待估参数&#xff08;或者说系统参数&#xff09;&#xff0c;X1,X2,…Xn是来自于总体X的样本&#xff0c;x1…

互联网医院|互联网医院系统开发|互联网医疗平台搭建

随着互联网的快速普及&#xff0c;互联网医院成为解决医疗资源分布不平衡、基层医疗服务短缺等问题的有效途径。互联网医院系统的优势主要体现在以下几个方面&#xff1a;   1.在线挂号预约   互联网医院系统可以方便快捷地进行在线预约挂号。患者可以通过小程序或网站实现…

BI大数据分析平台,精细化分析的必备工具

在日常的工作中&#xff0c;经常会遇到要做经营决策时&#xff0c;数据分析却掉链子的情况&#xff0c;比如当老板临时提出要进一步分析某类商品的销售情况时&#xff0c;得重新开发报表。BI大数据分析平台能不能随时随地实现精细化数据分析&#xff0c;避免数据分析跟不上运营…

Python实现ACO蚁群优化算法优化Catboost分类模型(CatBoostClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…

Java | 一分钟掌握定时任务 | 7 - ElasticJob分布式定时任务

作者&#xff1a;Mars酱 声明&#xff1a;本文章由Mars酱编写&#xff0c;部分内容来源于网络&#xff0c;如有疑问请联系本人。 转载&#xff1a;欢迎转载&#xff0c;转载前先请联系我&#xff01; 前言 ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案。 它通过…

pointNet、pointNet++算法学习笔记

算法结构 原理解析 已知&#xff1a; N个点&#xff0c;每个点的信息x,y,z。 MLP:全连接网络&#xff0c;输入层&#xff0c;隐藏层&#xff0c;输出层。 原理&#xff1a; &#xff08;1&#xff09;第一步 MLP 对每个点进行MLP操作&#xff0c;即&#xff1a;3–>MLP(3,C…

Spring MVC文件上传处理详解

Spring MVC文件上传处理详解 Spring MVC是Java Web开发中非常常用的框架之一&#xff0c;它提供了许多方便的功能。其中&#xff0c;文件上传是Web开发中常用的功能之一&#xff0c;本文将介绍如何使用Spring MVC处理文件上传以及相关代码实现。 文件上传的基本原理 在Web开发…

HTML-iconfont动态图标SVG效果--阿里巴巴图标矢量库

给北大打工&#xff0c;实现官网首页动态图标效果_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ys4y1c7oh/?spm_id_from333.1007.top_right_bar_window_default_collection.content.click&vd_source924f5dad6f2dcb0a3e5dca4604287ecd&#xff08;本篇笔记操作方法…

Java 基础语法学习笔记

目录 一、Java语言概述 1.1 Java 的出现 1.2 Java的主要特性 1.3 Java语言的特点 1.4 Java语言的核心机制 1.5 Java语言的环境搭建 二、第一个Java程序 2.1 需要注意的问题 2.2 注释&#xff08;comment) 2.3 注意点&#xff1a; 2.4 Java API 的文档 2.5 第一个 Jav…

python+django智慧办公hr招聘辅助管理系统vue

随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;智慧办公hr招聘辅助管理系统当然也不能排除在外。智慧办公hr招聘辅助管理系统是以实际运用为开发背景&#xff0c;运用软件工程…

深度学习框架-Keras:特点、架构、应用和未来发展趋势

引言 深度学习是一种新兴的技术&#xff0c;已经在许多领域中得到广泛的应用&#xff0c;如计算机视觉、自然语言处理、语音识别等。在深度学习中&#xff0c;深度学习框架扮演着重要的角色。Keras是一种广泛使用的深度学习框架&#xff0c;它在许多方面都有所改进&#xff0c…

云计算基础——云计算与移动互联网、物联网

8.1 云计算与移动互联网 8.1.1 移动互联网的发展概况 移动互联网的发展概况 移动互联网是指以宽带IP为技术核心&#xff0c;可同时提供语音、数据、多媒体等业务服务的开什么是移动互联网?放式基础电信网络&#xff0c;从用户行为角度来看&#xff0c;移动互联网广义上是指用…