Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
myc42351781
SimpleVideoServer
提交
5d40f4fd
S
SimpleVideoServer
项目概览
myc42351781
/
SimpleVideoServer
与 Fork 源项目一致
Fork自
云逸之 / SimpleVideoServer
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SimpleVideoServer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5d40f4fd
编写于
2月 11, 2023
作者:
云逸之
💬
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新0.0.3的自述文件
上级
aa3a73ce
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
89 addition
and
29 deletion
+89
-29
readme.md
readme.md
+89
-29
未找到文件。
readme.md
浏览文件 @
5d40f4fd
# SimpleVideoServer
camServer 的demo使用esp32cam自己提供http服务和视频流,会有较大性能开销。而且需要内网穿透才能外网访问。本项目提供服务端合成视频流的方式,esp32cam只需要不停拍照发送给服务端,服务端处理浏览器查看视频的请求,合成视频流给浏览器。
我们可以把服务端程序部署在公网,可以通过这样的方式远程访问。
CameraWebServer 的demo使用esp32cam自己提供http服务和视频流,会有较大性能开销。而且需要内网穿透才能外网访问。本项目提供服务端合成视频流的方式,esp32cam只需要不停拍照发送给服务端,服务端处理浏览器查看视频的请求,合成视频流给浏览器。
我们可以把服务端程序部署在公网,便可可以通过这样的方式远程访问。
```
mermaid
graph LR
e(esp32cam)
e1(esp32cam1)
e2(合宙esp32S3)
S(SimpleVideoServer)
e -->|帧|S
e1 -->|帧|S
e2 -->|帧|S
B(浏览器)
S -->|mjpeg视频流|B
B2(浏览器2)
S -->|mjpeg视频通道1|B
S -->|mjpeg视频通道2|B
S -->|mjpeg视频通道3|B
S -->|mjpeg视频通道3|B2
```
本项目提供了,服务端代码与esp32cam(或合宙ESP32S3)的代码。
...
...
@@ -22,11 +32,11 @@ _如果支持该项目,请点star ⭐ 而不是 关注通知,后者只会让
根据自己需要选择以下任意方式运行服务端
*
下载
[
windows服务端发行版
](
https://gitcode.net/qq_26700087/simpleVideoServer/uploads/
bcafcb53130a277f3b6f92f8c83249a7
/win_release.zip
)
*
下载
[
windows服务端发行版
](
https://gitcode.net/qq_26700087/simpleVideoServer/uploads/
6921add7359f43de65f0ddbfb18506fd
/win_release.zip
)
解压之后,进入对应目录点击run.bat文件启动服务器。
*
下载
[
linux服务端发行版
](
https://gitcode.net/qq_26700087/simpleVideoServer/uploads/
83402dcffb269aac326a2f5649ef6970
/linux_release.tar.gz
)
*
下载
[
linux服务端发行版
](
https://gitcode.net/qq_26700087/simpleVideoServer/uploads/
adc7969ec556ca2a5bbf9eb6bdbb54f7
/linux_release.tar.gz
)
需要unzip或p7z等可以解压zip的应用
...
...
@@ -52,24 +62,44 @@ _如果支持该项目,请点star ⭐ 而不是 关注通知,后者只会让
如鄙人执行的服务端日志打印含有esp32Cam接入的后的相关打印如下:
```
D:\Users\immor\idea\SimpleVideoServer\out\win_release>.\jre\bin\java -classpath SimpleVideoServer org.btik.server.video.Main
```
tex
D:
\Users\immor\idea\SimpleVideoServer\out\win
_
release>.
\jre\bin\java
-classpath SimpleVideoServer org.btik.server.video.UDP2Main
----- version:0.0.3 -----
[gitcode page] => https://gitcode.net/qq
_
26700087/simpleVideoServer
snChannelBinderPort:[TCP] 8004
binder stared
init buffer pool
start dispatchers
dispatcherPoolSize: 8
frameDelayTimeout: 3000
streamPort:[UDP] 8004
bufferPoolSize:500
udp channel loaded
httpPort:[TCP] 8003
bio video server started
bio Device Channel started
new channel:
http://127.0.0.1:8003/video/441793EE3C08
http://192.168.0.116:8003/video/441793EE3C08
http://192.168.137.1:8003/video/441793EE3C08
start /192.168.137.234:53051
Channel /7CDFA1FA0F08 is online
http://127.0.0.1:8003/video/7CDFA1FA0F08
http://192.168.0.110:8003/video/7CDFA1FA0F08
http://192.168.137.1:8003/video/7CDFA1FA0F08
```
每接入一个摄像头会新建一个频道,在
`new channel:`
的打印后会出现,相关可以访问视频流的地址。
每接入一个摄像头会新建一个频道,在
`Channel /{mac地址} is online:`
的打印后会出现,相关可以访问视频流的地址。
video后为通道地址,为设备的mac地址不含分隔符十六进制大写的字符串。
你可以在本机,或者局域网的其他设备访问
。
这个时候其实只是获取了设备的通道索引,并非开始传图片
。
部署在云服务器的同学把端口打开后,把内网ip替换成公网ip,或者域名即可。
如果供电不足,还需要等待足够长的时间,特别是合宙ESP32S3,在供电不足情况下,可能需要等待数分钟视频才稳定。
这些地址是获取网卡上的ip拼接成http地址。如果是云服务器,其公网ip并非在网卡上。
**部署在云服务器的同学把端口打开(需要开放安全组的端口见后文配置项相关说明)后,需要把内网ip替换成公网ip,或者域名即可**
。
每次重新启动接入服务器都会打印
`Channel /{mac地址} is online: `
如果反复打印,可以看看是否接触不良。
...
...
@@ -127,15 +157,27 @@ _如果支持该项目,请点star ⭐ 而不是 关注通知,后者只会让
```
properties
http.port
=
8003
http.clients.limit
=
10
stream.port
=
8004
stream.bind.port
=
8004
frame.delay.skip.timeout
=
3000
udp.video.buffer.pool.size
=
500
udp.video.dispatcher.thread.size
=
8
udp.video.channel.size
=
128
```
**http.port**
为http的端口。
**http.port**
为http的端口
**TCP端口 公网时需要开放该端口**
。
**stream.port**
esp32向服务端发送照片的端口 ,一般无需修改,修改则同步修改esp32中对应 的。
**UDP端口 公网时需要开放该端口**
。
**stream.bind.port**
esp32 获取通道索引的端口
**TCP端口 公网时需要开放该端口**
。
**frame.delay.skip.timeout**
接收esp32图片快于发给浏览器速度时,会造成图片积压,延时会逐步累积,当某帧图片接收和处理的延时超过当前阈值之后,丢弃该帧
**udp.video.buffer.pool.size**
udp帧缓存池大小, 会固定占用一部分内存反复使用
**
http.clients.limit**
摄像头在线接入限制数。本意是想限制客户端参与的数量故名为http.clients.limit,实际的实现是限制了摄像头的数量
**
udp.video.dispatcher.thread.size**
分发线程数量,不是越多越好,目前不建议改大,因为当前mjpeg的带宽负载的压力根本无法在公网接大量摄像头,访问视频用户多也会同样占用带宽。
**
stream.port**
esp32cam像服务端发送照片的端口,在本项目中使用该默认端口,如果需要修改,一并修改esp32cam代码中连接的端口。一般无需修改
。
**
udp.video.channel.size**
视频通道数量,会限制接入的数量,每个通道的索引在esp32接入的时候获取,该值不能超过255。并非同时在线数量,而是总设备数量,即是无其它设备在线,总数量用完,新的摄像头也无法接入。服务器重启后,则会重置,则需要esp32重启,重新获取通道索引。通道号的依据 是设备的MAC地址唯一对应一个索引
。
...
...
@@ -147,17 +189,15 @@ stream.port=8004
没有其他需要可以下载上面的发型版本,已包含64位jre17,也可以使用自定义jre17运行。
代码理论上java8也可以编译,若有需要可以自行编译。
*
:file_folder:
**simpleVideoRecorder目录为esp32cam(或合宙ESP32S3)的代码**
使用platformio基于ardunio框架开发。
1.
使用platformio开发的同学请按实际情况修改simpleVideoRecorder 目录下的platformio.ini的串口
1.
使用platformio开发
修改simpleVideoRecorder 目录下的platformio.ini不同env的串口
修改以下内容切换开发板环境配置。来确定使用esp32cam配置或者使用合宙S3的配置。
切换开发板类型
修改以下内容切换开发板环境配置。来确定使用esp32cam配置或者使用合宙S3的配置。
```
ini
[platformio]
...
...
@@ -167,11 +207,27 @@ stream.port=8004
若使用命令则可以使用 -e 选项 后接具体env。
设置esp32 的CORE_DEBUG 日志级别,默认为info。
```
ini
build_flags
=
XXX
-DCORE_DEBUG_LEVEL
=
ARDUHAL_LOG_LEVEL_INFO
;
-DCORE_DEBUG_LEVEL
=
ARDUHAL_LOG_LEVEL_VERBOSE
```
2.
使用ardunio IDE开发 ,为了保险起见,你可以把源码中
`main.cpp`
重命名为
`main.ino`
2.
使用ardunio IDE开发
**重命名文件 ,新建项目**
为了保险起见,你可以把源码中
`simpleVideoRecorder.cpp`
重命名为
`simpleVideoRecorder.ino`
**选择开发板**
请注意 选择开发板 为esp32cam,需要安装esp32环境 。使用合宙S3时选择
`ESP32S3 Dev Module`
,一般默认就好,可以注意看psram需要设置为禁用。
选择开发板 为esp32cam,需要安装esp32环境 。
使用合宙S3时选择
`ESP32S3 Dev Module`
,一般默认就好,可以注意看psram需要设置为禁用。
若找不到ESP32S3相关开发板,则说明你的ide上的esp32相关环境未安装2.0以上的版本。添加
...
...
@@ -183,6 +239,10 @@ stream.port=8004
由于包很大也较多失败率也会很高。
**设置CORE DEBUG 级别**
在arduino ide的 工具 -> CORE DEBUG LEVEL 某些打印至少需要 info级别才能打印。
*
如果在局域网也可以使用PC作为服务端,查看充当服务端的PC的ip。
...
...
@@ -191,7 +251,7 @@ stream.port=8004
*
修改
main
.cpp中的wifi的ssid和密码
*
修改
simpleVideoRecorder
.cpp中的wifi的ssid和密码
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录