ffmpeg+nginx实现rtsp协议摄像头web端播放

ffmpeg+nginx实现rtsp协议摄像头web端播放

  • 环境准备
  • 准备nginx环境
    • 添加rtmp模块
    • 添加hls转发
  • 使用ffmpeg,将摄像头rtsp转为rtmp并推送到nginx
  • VLC播放验证

环境准备

  • nginx(需要安装rtmp模块)
  • ffmpeg 6.0
  • vlc播放器(本地播放验证)

这些资源已经上传需要的可以自己下载,这个压缩包里的nginx已经安装好所需模块,解压即可使用
下载地址

准备nginx环境

添加rtmp模块

# 注意这个和http模块同级
rtmp {server {listen 1935;  # 监听端口 1935,用于 RTMP 数据流传输chunk_size 4000;  # 数据传输分块大小application live {  # 定义RTMP的路径名live on;  # 开启 RTMP 直播功能hls on;  # 开启 HLS 功能hls_path html/hls;  # HLS 分片文件存储路径hls_fragment 2s;  # 每个 HLS 分片的时长为 2 秒。hls_playlist_length 6s;  # HLS 播放列表长度为 6 秒}}
}

添加hls转发

         # 这个在server模块里面location /hls {#配置MIME 类型types {application/vnd.apple.mpegurl m3u8;video/mp2t ts;}#指定请求路径对应的文件路径(HLS 分片文件存储的位置)alias html/hls/;#响应头设置 禁止缓存 HLS 分片文件add_header Cache-Control no-cache;}

使用ffmpeg,将摄像头rtsp转为rtmp并推送到nginx

如果你使用的是海康威视得摄像头构成一般为rtsp://摄像头用户名:密码@摄像头IP:摄像头端口/Streaming/Channels/摄像头标识

ffmpeg -rtsp_transport tcp -i  rtsp://摄像头IP:摄像头端口/Streaming/Channels/1  -c copy -f flv rtmp://nginx所在服务器IP:刚才配置RTMP模块监听端口/rtmp模块中application后面跟着的路径/自定义流的名称

VLC播放验证

在这里插入图片描述
VLC->媒体->打开媒体串流
播放地址如下:
http://nginx服务器IP:配置代理的端口(server中定义的)/location定义的代理地址/ffmpeg中自定义的流的名称.m3u8

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

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

相关文章

Java内存模型

Java内存模型全称JMM(Java Memory Model) 内存主要有堆和栈组成 下面来一段demo代码详细讲解堆栈的作用,以及流程 public class Employee {private String name;private Integer age;private Department department;public Employee(){}pub…

【NLP】深入浅出全面回顾注意力机制

深入浅出全面回顾注意力机制 1. 注意力机制概述2. 举个例子:使用PyTorch带注意力机制的Encoder-Decoder模型3. Transformer架构回顾3.1 Transformer的顶层设计3.2 Encoder与Decoder的输入3.3 高并发长记忆的实现self-attention的矩阵计算形式多头注意力(…

阿里云服务器安装AMH面板建站教程

本文阿里云百科分享使用阿里云服务器安装AMH面板建站教程,AMH是一套通过Web控制和管理Linux服务器以及虚拟主机的管理系统。您可以使用云服务器ECS安装AMH来搭建PHP网站。本篇教程分别介绍如何在Linux系统实例中部署AMH并快速搭建PHP网站。 目录 前提条件 手动部…

数据结构和算法三(排序)

列表排序 排序类型&#xff1a; 一、冒泡排序&#xff1a; 屏幕录制2023-07-25 13.05.12 def bubble_sort(li):exchangeFalseif len(li)<1:return lifor i in range(len(li)-1):for j in range(len(li)-i-1):if li[j]>li[j1]:li[j],li[j1]li[j1],li[j]print(li)exchangeT…

【ChatGPT】自我救赎

ChatGPT辅助学习C之【在C中如果大数据类型转小数据类型会发生什么呢?】&#xff0c;今天问ChatGPT一个问题&#xff0c;让它解析下面这个C程序&#xff1a; #include <iostream> #include <cstdio> using namespace std; int main() {int a;long long b532165478…

gitlab 503 错误的解决方案

首先使用 sudo gitlab-ctl status 命令查看哪些服务没用启动 sudo gitlab-ctl status 再用 gitlab-rake gitlab:check 命令检查 gitlab。根据发生的错误一步一步纠正。 gitlab-rake gitlab:check 查看日志 tail /var/log/gitlab/gitaly/current删除gitaly.pid rm /var/opt…

LAXCUS如何通过技术创新管理数千台服务器

随着互联网技术的不断发展&#xff0c;服务器已经成为企业和个人获取信息、进行计算和存储的重要工具。然而&#xff0c;随着服务器数量的不断增加&#xff0c;传统的服务器管理和运维方式已经无法满足现代企业的需求。LAXCUS做为专注服务器集群的【数存算管】一体化平台&#…

三平面映射的技术

大家好&#xff0c;我是阿赵。   之前在做护盾的时候&#xff0c;使用过一种叫做三平面映射的技术&#xff0c;这里来详细的说一下。 一、效果说明 在做场景的时候&#xff0c;很多美工都会遇到一个问题&#xff0c;想把一个通用的材质贴图赋予给一个经过拉伸的模型&#xf…

3 vue的if语法

vue的if语法是相当于一个标签的属性来写进去的&#xff0c;比如说<h1 v-if“”>。要注意的是if语句里可以自动从数据层取值的&#xff0c;比如<h1 v-if"message">&#xff0c;这里就会自动把key为message的值取过来&#xff0c;而如果要传一个字符串&…

BpBinder与PPBinder调用过程——Android开发Binder IPC通信技术

在Android系统中&#xff0c;进程间通信&#xff08;IPC&#xff09;是一个非常重要的话题。Android系统通过Binder IPC机制实现进程间通信&#xff0c;而Binder IPC通信技术则是Android系统中最为重要的进程间通信技术之一。本文将介绍Binder IPC通信技术的原理&#xff0c;并…

【Pytorch】P0 Windows 安装 Pytorch

Windows安装Pytorch 前言PyTorch&#xff0c;CUDA与GPUCUDA ToolkitSo...总而言之 整体流程一&#xff1a;安装 CUDA Toolkit步骤一&#xff1a;获取CUDA版本信息步骤二&#xff1a;下载安装 CUDA Toolkit步骤三&#xff1a;按照默认步骤安装步骤四&#xff1a;检查CUDA安装成功…

FFmpeg 编码详细流程

介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力&#xff0c;只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API&#xff0c;将avcodec_encode_audio2(…