SSM架构 +Nginx+FFmpeg实现rtsp流转hls流,在前端html上实现视频播放

序言:

本文介绍通过SSM架构 +Nginx+FFmpeg实现rtsp流转hls流,在前端html上实现视频播放功能。此方法可用于网络摄像头RTSP视频流WEB端实时播放。(海康和大华都可以),我使用的是海康

步骤一:安装软件 FFmpeg(windows)

1.下载并解压: FFmpeg文件夹

2.配置环境变量: 在"Path"变量原有变量值内容上加上d:\ffmpeg\bin

3.验证: ffmpeg -version 出现版本号则成功。

步骤二:安装软件 Nginx(windows)

1.下载并解压: nginx文件夹

2.Nginx配置: 修改配置文件:nginx/conf/nginx.conf

java 复制代码
 location /hls {
			
			
			root html;
			
			index    index.html index.htm index2.html;
			
			# 允许跨域请求
			add_header Access-Control-Allow-Origin *;
        }
		

3.验证: 配置完之后,启动nginx服务。http://localhost:80/

RTSP地址获取流程

例如:rtsp://admin:[email protected]:554/streaming/channels/101

一、RTSP地址基本格式

海康摄像头的RTSP地址通常遵循以下基本格式:

java 复制代码
rtsp://[username]:[password]@[ip]:[port]/[path]


-username:摄像头的用户名,默认为"admin"。

-password:摄像头的密码,需根据设备实际设置而定。

-ip:摄像头的IP地址。

-port:RTSP端口号,默认为554,若未修改则可不写。

-path:流媒体的访问路径,根据摄像头的型号和配置不同而有所区别。

二、RTSP地址获取步骤

1.登录摄像头管理系统

首先,通过浏览器登录摄像头的Web管理系统,通常使用摄像头的默认IP地址(如192.168.1.64)和默认用户名密码(admin/admin或admin/12345)进行登录。

2.查看网络配置

在摄像头管理系统中,找到网络配置部分,查看并记录摄像头的IP地址、端口号等信息。

3.确定RTSP路径

RTSP路径可能因摄像头型号和固件版本而异,一般有以下几种格式:

-新格式:rtsp://[username]:[password]@[ip]:[port]/streaming/channels/

-例如,取主码流:rtsp://admin:[email protected]:554/streaming/channels/101

-参数``中,通道1的主码流为"101",子码流为"102"。

-老格式:rtsp://[username]:[password]@[ip]:[port]/[videotype]/ch/[streamtype]/av_stream

-例如,主码流取流:rtsp://admin:[email protected]:554/h264/ch1/main/av_stream

-参数中,videotype为视频编码类型(如h264、mpeg4),streamtype为码流类型(主码流为main,子码流为sub)。

4.测试RTSP地址

使用支持RTSP的播放器(如VLCMediaPlayer)输入RTSP地址进行测试,确认视频流是否能够正常获取和播放。

VLC安装包链接:VLC安装包https://download.csdn.net/download/qq_39951524/90465347

FFmpeg命令行转流(rtsp 转 hls流)

java 复制代码
ffmpeg -fflags +genpts
 -i "rtsp://admin:[email protected]:554/streaming/channels/101" 
 -c copy 
 -f hls 
 -hls_time 10 
 -hls_list_size 10 
  D:/nginx/html/hls/test.m3u8

命令解释

java 复制代码
-fflags +genpts: 这个选项告诉 FFmpeg 在处理输入文件时生成 PTS。这对于某些编码的视频文件(特别是那些 PTS/DTS 不完全正确或缺失的)非常有用。它可以确保 PTS 被正确生成,这对于 HLS 流的正确播放很重要。

-i "rtsp:sdd.mp4": 指定输入文件,这里是 rtsp视频流。

-c copy: 使用复制流的方式来编码视频和音频,这意味着不对数据进行重新编码,只是简单地复制数据。这可以减少处理时间和提高效率,但前提是输入和输出容器及编解码器必须兼容。

-f hls: 指定输出格式为 HLS。

-hls_time 2.0: 设置每个 HLS 分片的时长为 2 秒。

-hls_list_size 1: 指定播放列表中最多包含一个分片。这对于事件驱动的直播非常有用,因为你可以在事件发生时快速更新播放列表。

output/: 指定输出目录,所有生成的 HLS 文件和播放列表将被放置在此目录中。

HTML通过html播放

使用 DH-HlsFlv-PlayerDemoV1.1.3 程序包中的界面

注意:(用video.js打不开hls流视频 )本人找了很久才找到可以播放hls的网页

在页面中把hls地址输入到里边(http://服务器IP:80/hls/test.m3u8)

就可以展示出监控视频的界面了

如果想把内容集合到SSM架构中

可以查看下一篇文章:链接:SSM架构 +java后台 实现rtsp流转hls流,在前端html上实现视频播放

相关推荐
gyx_这个杀手不太冷静36 分钟前
Vue3 响应式系统探秘:watch 如何成为你的数据侦探
前端·vue.js·架构
梧桐樹下1 小时前
FFmpeg avformat_open_input函数分析
ffmpeg
道剑剑非道1 小时前
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
开发语言·qt·ffmpeg
IOsetting1 小时前
Ubuntu24.04 交叉编译 aarch64 ffmpeg
ffmpeg
却道天凉_好个秋1 小时前
ffmpeg(三):处理原始数据命令
ffmpeg
@残梦1 小时前
129、QT搭建FFmpeg环境
开发语言·qt·ffmpeg
eternal__day1 小时前
微服务架构下的服务注册与发现:Eureka 深度解析
java·spring cloud·微服务·eureka·架构·maven
Wang's Blog3 小时前
Monorepo架构: Nx Cloud 扩展能力与缓存加速
缓存·架构
Adorable老犀牛3 小时前
负载均衡将https请求转发后端http服务报错:The plain HTTP request was sent to HTTPS port
nginx·http·https·负载均衡
cooldream200911 小时前
利用 Scrapy 构建高效网页爬虫:框架解析与实战流程
爬虫·scrapy·架构