使用说明补充

This commit is contained in:
madao
2024-12-01 10:54:16 +08:00
parent 3e36836289
commit 8ee2b1eaa4
9 changed files with 154 additions and 37 deletions

View File

@@ -1,22 +1,70 @@
#### rtsp2rtmp
# rtsp2rtmp
![](./docs/images/rtsp2rtmpad.png)
##### 项目功能:
1. rtsp转httpflv播放
2. rtsp转rtmp推送
3. rtsp视频录像录像文件为flv格式
## 关于rtsp2rtmp
rtsp2rtmp项目实现了连接rtsp协议的设备摄像头等采集视频流转换成flv录像文件httpflv流rtmp流可作为监控或者直播项目。
## 安装说明
> 注意:
>
> 建议下载带"_sqlite3"的版本无需安装数据库即可快速开始运行了解功能其他版本需要根据配置文件和初始化sql文件创建数据库连接数据库开始才能运行。
> sqlite3版本使用到了cgo功能编译比较麻烦建议在ubuntu中安装mingw-w64进行交叉编译可参照sqlite3分支下的build.sh查看交叉编译信息
>
> 程序目前支持h264视频编码、aac音频编码若不能正常播放关掉摄像头推送的音频再尝试
##### 运行说明:
1. 软件下载地址https://github.com/hkmadao/rtsp2rtmp/releases
2. 解压,找到'./resources/conf/conf-prod.yml'配置文件,修改相关配置
3. 根据下载版本,运行 rtsp2rtmp 程序
4. 打开http://[ip:localhost]:[port:8080]/rtsp2rtmp ,如http://127.0.0.1:8080/rtsp2rtmp , 默认用户名/密码: admin/admin
1. 下载[程序文件](https://github.com/hkmadao/rtsp2rtmp/releases),解压
2. 安装postgresql,根据配置文件"resources/conf/conf-prod.yml"创建数据库
3. 根据"docs/init/rtsp2rtmp-postgresql.sql"文件创建表
4. 执行程序文件window下执行rtsp2rtmp.exelinux下执行rtsp2rtmp
5. 浏览器访问程序服务地址http://[server_ip]:8080/rtsp2rtmp/#/ ,根据配置文件"resources/conf/conf-prod.yml"密码登录系统
6. 在网页配置摄像头的rtsp地址、要推送到的rtmp服务器地址等信息
7. 等待连接摄像头约30秒左右,观看视频
## 使用说明:
1. 打开摄像头列表页面
![](./docs/images/camera-list.png)
2. 点击创建按钮,跳转到创建摄像头页面,填写信息,完成摄像头创建
*若摄像头的音频格式是G711或者其它目前是不支持的需要在摄像头配置中禁用音频*
![](./docs/images/camera-create.png)
3. 查看摄像头列表页面,等待摄像头程序连接摄像头(大约30秒左右
![](./docs/images/camera-online.png)
4. 找到摄像头功能列表
![](./docs/images/camera-action.png)
4.1. 启用/禁用
管理是否获取rtsp的视频数据流禁用后将不再拉取rtsp的视频数据流
4.2. 播放
播放摄像头视频,若是摄像头没有音频,请停止音频,然后再点播放按钮进行播放
![](./docs/images/camera-play.png)
4.3. 重置播放码
摄像头播放的httpflv是通过url的编号和权限码控制的建议定时更换播放权限码
4.4. 开启/停止录像
可根据需求确定是否开启或停止录像停止后将不再生成flv录像文件
4.5. 开启/停止直播
开启或停止HttpFlv发布播放视频流停止后通过客户端或者web将不能播放摄像头视频
4.6. 开启/停止Rtmp推送
开启或停止向Rtmp服务器推送视频流
4.7. 分享
**发现摄像头正在拍摄有趣的事情,赶紧分享给好友吧**
摄像头的视频流可以通过HttpFlv进行发布网页或客户端可以拉取视频流进行播放但是是需要通过url的信息做编码和密码的匹配的在分享功能页面可以创建分享的url信息并且控制是否分享、分享时长等
4.3.1. 分享列表
可在分享列表页面查看、管理分享信息
![](./docs/images/camera-share-list.png)
4.3.2. 创建分享
填写分享信息,保存
![](./docs/images/camera-share-create.png)
## 项目说明:
1. 用户配置摄像头信息包括摄像头编号code、摄像头rtsp地址rtspURL、推送的rtmp地址rtmpURL等
2. 系统连接到摄像头,获取音视频数据
3. 系统解析摄像头数据保存为flv文件
4. 系统推送搭到配置好的rtmp服务器
5. 用户请求观看视频,系统返回视频数据给用户播放
## 解析说明:
1. 音视频编解码使用的是开源项目[vdk](https://github.com/deepch/vdk.git)的功能
2. 服务器连接到摄像头, 服务器获取到音视频数据, 解析为 av.packet, 分发给 FileFlvAdmin, RtmpFlvAdmin, HttpFlvAdmin 处理
3. FileFlvAdmin 将数据封装为flv文件的数据格式, 写入文件
4. RtmpFlvAdmin 将数据封装为rtmp流的数据格式, 发送到rtmp服务器
5. HttpFlvAdmin 将数据封装为httpflv流数据格式, 等待http请求连接, 返回流数据供web端或者其他客户端播放视频
> 注意:
>
@@ -25,7 +73,7 @@
>
> 程序目前支持h264视频编码、aac音频编码若不能正常播放关掉摄像头推送的音频再尝试
##### 目录结构:
## 目录结构:
```
--rtsp2rtmp #linux执行文件
@@ -40,7 +88,7 @@
--log #程序输出的日志文件夹
```
##### 配置说明:
## 配置说明:
```
server:
@@ -63,11 +111,11 @@ server:
show-sql: false #是否打印sql
```
##### 开发说明:
## 开发说明:
程序分为服务器和页面服务端采用golang开发前端采用react+materia-ui完成后编译页面文件放入服务器的resources/static文件夹,或者修改配置文件页面所在文件夹的路径
###### 服务器开发说明:
### 服务器开发说明:
1. 安装golang
2. 获取[服务器源码](https://github.com/hkmadao/rtsp2rtmp.git)
@@ -76,10 +124,10 @@ server:
5. 进入项目目录
6. go build开发
###### 页面开发说明:
### 页面开发说明:
1. 安装node
2. 下载[页面源码](https://github.com/hkmadao/rtsp2rtmp-web.git)
3. 进入项目目录
4. npm install
5. npm run start
5. npm run start

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
docs/images/camera-list.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

BIN
docs/images/camera-play.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

View File

@@ -1,8 +1,56 @@
#### rtsp2rtmp
# rtsp2rtmp
![](./images/rtsp2rtmpad.png)
##### 项目说明:
## 关于rtsp2rtmp
rtsp2rtmp项目实现了连接rtsp协议的设备摄像头等采集视频流转换成flv录像文件httpflv流rtmp流可作为监控或者直播项目。
## 安装说明
> 注意:
>
> 建议下载带"_sqlite3"的版本无需安装数据库即可快速开始运行了解功能其他版本需要根据配置文件和初始化sql文件创建数据库连接数据库开始才能运行。
> sqlite3版本使用到了cgo功能编译比较麻烦建议在ubuntu中安装mingw-w64进行交叉编译可参照sqlite3分支下的build.sh查看交叉编译信息
>
> 程序目前支持h264视频编码、aac音频编码若不能正常播放关掉摄像头推送的音频再尝试
1. 软件下载地址https://github.com/hkmadao/rtsp2rtmp/releases
2. 解压,找到'./resources/conf/conf-prod.yml'配置文件,修改相关配置
3. 根据下载版本,运行 rtsp2rtmp 程序
4. 打开http://[ip:localhost]:[port:8080]/rtsp2rtmp ,如http://127.0.0.1:8080/rtsp2rtmp , 默认用户名/密码: admin/admin
## 使用说明:
1. 打开摄像头列表页面
![](./images/camera-list.png)
2. 点击创建按钮,跳转到创建摄像头页面,填写信息,完成摄像头创建
*若摄像头的音频格式是G711或者其它目前是不支持的需要在摄像头配置中禁用音频*
![](./images/camera-create.png)
3. 查看摄像头列表页面等待摄像头程序连接摄像头大约30秒左右
![](./images/camera-online.png)
4. 找到摄像头功能列表
![](./images/camera-action.png)
4.1. 启用/禁用
管理是否获取rtsp的视频数据流禁用后将不再拉取rtsp的视频数据流
4.2. 播放
播放摄像头视频,若是摄像头没有音频,请停止音频,然后再点播放按钮进行播放
![](./images/camera-play.png)
4.3. 重置播放码
摄像头播放的httpflv是通过url的编号和权限码控制的建议定时更换播放权限码
4.4. 开启/停止录像
可根据需求确定是否开启或停止录像停止后将不再生成flv录像文件
4.5. 开启/停止直播
开启或停止HttpFlv发布播放视频流停止后通过客户端或者web将不能播放摄像头视频
4.6. 开启/停止Rtmp推送
开启或停止向Rtmp服务器推送视频流
4.7. 分享
**发现摄像头正在拍摄有趣的事情,赶紧分享给好友吧**
摄像头的视频流可以通过HttpFlv进行发布网页或客户端可以拉取视频流进行播放但是是需要通过url的信息做编码和密码的匹配的在分享功能页面可以创建分享的url信息并且控制是否分享、分享时长等
4.3.1. 分享列表
可在分享列表页面查看、管理分享信息
![](./images/camera-share-list.png)
4.3.2. 创建分享
填写分享信息,保存
![](./images/camera-share-create.png)
## 项目说明:
1. 用户配置摄像头信息包括摄像头编号code、摄像头rtsp地址rtspURL、推送的rtmp地址rtmpURL等
2. 系统连接到摄像头,获取音视频数据
@@ -10,22 +58,43 @@
4. 系统推送搭到配置好的rtmp服务器
5. 用户请求观看视频,系统返回视频数据给用户播放
##### 解析说明:
## 解析说明:
1. 音视频编解码使用的是[开源项目](https://github.com/deepch/vdk.git)的功能
2. 服务器连接到摄像头服务器获取到音视频数据解析为av.packet分发给FileFlvManager和HttpFlvManager处理
3. FileFlvManager将数据封装为flv文件的数据格式写入文件
4. RtmpFlvManager将数据封装为rtmp流的数据格式发送到rtmp服务器
5. 用户通过http方式和服务器连接请求视频数据HttpFlvManager将av.packet封装为httpflv格式数据返回
1. 音视频编解码使用的是开源项目[vdk](https://github.com/deepch/vdk.git)的功能
2. 服务器连接到摄像头, 服务器获取到音视频数据, 解析为 av.packet, 分发给 FileFlvAdmin, RtmpFlvAdmin, HttpFlvAdmin 处理
3. FileFlvAdmin 将数据封装为flv文件的数据格式, 写入文件
4. RtmpFlvAdmin 将数据封装为rtmp流的数据格式, 发送到rtmp服务器
5. HttpFlvAdmin 将数据封装为httpflv流数据格式, 等待http请求连接, 返回流数据供web端或者其他客户端播放视频
##### 配置说明
> 注意
>
> 若想快速运行可下载带_sqlite3结尾的版本该版本使用的是sqlite3数据库无需安装数据库即可运行
> sqlite3版本使用到了cgo功能编译比较麻烦建议在ubuntu中安装mingw-w64进行交叉编译可参照sqlite3分支下的build.sh查看交叉编译信息
>
> 程序目前支持h264视频编码、aac音频编码若不能正常播放关掉摄像头推送的音频再尝试
## 目录结构:
```
--rtsp2rtmp #linux执行文件
--rtsp2rtmp.exe #window执行文件
--resources
--static #程序的网页文件夹
--conf #配置文件文件夹
--conf-dev.yml #配置文件
--conf-prod.yml #配置文件
--output #程序输出文件夹
--live #保存摄像头录像的文件夹录像格式为flv
--log #程序输出的日志文件夹
```
## 配置说明:
```
server:
user:
name: admin #网页登录用户名
password: admin #网页登录密码
rtmp:
password: admin #网页登录密码不要用纯数字有bug
httpflv:
port: 8080
static:
@@ -39,14 +108,14 @@ server:
driver-type: 4 #数据库类型
driver: postgres #数据库驱动
url: user=postgres password=123456 dbname=rtsp2rtmp host=localhost port=5432 sslmode=disable TimeZone=UTC #数据库url
show-sql: false #是否打印sql
show-sql: false #是否打印sql
```
##### 开发说明:
## 开发说明:
程序分为服务器和页面服务端采用golang开发前端采用react+materia-ui完成后编译页面文件放入服务器的resources/static文件夹,或者修改配置文件页面所在文件夹的路径
###### 服务器开发说明:
### 服务器开发说明:
1. 安装golang
2. 获取[服务器源码](https://github.com/hkmadao/rtsp2rtmp.git)
@@ -55,10 +124,10 @@ server:
5. 进入项目目录
6. go build开发
###### 页面开发说明:
### 页面开发说明:
1. 安装node
2. 下载[页面源码](https://github.com/hkmadao/rtsp2rtmp-web.git)
3. 进入项目目录
4. npm install
5. npm run start
5. npm run start