序言:
本文介绍通过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:bfm100866@192.168.1.64: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:123456@192.168.1.64:554/streaming/channels/101
-参数``中,通道1的主码流为"101",子码流为"102"。
-老格式:rtsp://[username]:[password]@[ip]:[port]/[videotype]/ch/[streamtype]/av_stream
-例如,主码流取流:rtsp://admin:12345@192.168.0.1: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:bfm100866@192.168.1.64: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上实现视频播放