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

news/2024/10/31 9:31:15/

文章目录

  • 一、使用 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 portchunk_size 4000;application show {live on;# Turn on HLShls on;# Make sure Pernission of Nginx to writehls_path /mnt/hls/;hls_fragment 3;hls_playlist_length 60;# disable consuming the stream from nginx as rtmpallow play all;}}
}http {sendfile off;tcp_nopush on;aio on;directio 512;default_type application/octet-stream;server {listen 8080;#server_name ***.***.***.***;location / {# Disable cacheadd_header 'Cache-Control' 'no-cache';# CORS setupadd_header 'Access-Control-Allow-Origin' '*' always;add_header 'Access-Control-Expose-Headers' 'Content-Length';# allow CORS preflight requestsif ($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 defaultssudo 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.ppmy.cn/news/83052.html

相关文章

【算法】手摇算法反转部分字符串

文章目录 什么是手摇算法? 什么是手摇算法? 有一个场景,就是反转字符串中的字符。这个很简单,我们可以很快的写出如下代码: /*** 反转倒置* 在由char[]转为Sting注意不要使用toSting方法*/public static void revers…

《Kali渗透基础》02. 基本工具

kali渗透 1:基本工具1.1:NetCat1.1.1:命令参数1.1.2:示例 1.2:NCat1.2.1:命令参数1.2.2:示例 1.3:WireShark1.4:TCPdump1.4.1:命令参数1.4.2:示例…

路由器端口映射-原理+图解

文章目录 1. 前言2. 内部服务器3. 内网IP3.1 含义3.2 查询内网IP方法3.3 直观法判断内网IP 4. 内部端口5. 外部端口6. 远程桌面连接7. 端口映射原理图8. 欢迎纠正~ 1. 前言 端口映射就是可将N台主机的内网IP地址映射成一个公网IP地址,从而让外网可以访问到局域网内…

纽约时报对全球HR选出他们最想招聘的毕业生所来自的前150所大学

美国《纽约时报》对全球2500个HR部门和2000位企业的CEO发出了问卷,排名选出他们最想招聘的毕业生所来自的大学 1哈佛大学。 美国 2耶鲁大学。 美国 3 剑桥大学 英国 4 牛津大学 英国 5 斯坦福大学。 美国 6 马萨诸塞州理工学院 美国 7 哥伦比亚大学。 美国 8 普林斯…

智能文档处理黑科技,拥抱更高效的数字世界

目录 0 写在前面1 为何要关注智慧文档?2 图像弯曲矫正3 手写板反光擦除4 版面元素检测5 文档篡改检测总结 0 写在前面 近期,中国图象图形学学会文档图像分析与识别专业委员会与上海合合信息科技有限公司联合打造了《文档图像智能分析与处理》高峰论坛。…

VTKmimics Calculate Parts

前言:本博文主要研究mimics中Calculate Parts所采用的方法以及VTK中三维重建的方法,希望对各位小伙伴有所帮助,谢谢! mimics-Calculate parts - Interpolation Gray Interpolation 灰度值插值是一种真正的3D插值,它考…

R1CS和relaxed R1CS(二)

续 R1CS和relaxed R1CS(一) 2. relaxed R1CS releaxed RlCS定义: ( A , B , C , m , n , l ) (A,B,C,m,n,l) (A,B,C,m,n,l),其中 m 、 n 、 l m、n、l m、n、l为正整数,且 m > l m>l m>l, A , B , C ∈ F m m A,B,C \in F^{m \times m} A,…

cjson嵌套

创建 char * makeJson() { cJSON * pRoot NULL; cJSON * pSub_1 NULL; cJSON * pSub_2 NULL; if((pRoot cJSON_CreateObject()) NULL) { return NULL; } if((pSub_1 cJSON_CreateObject()) NULL) { return NULL; } …