添加文档
BIN
doc/_content/qa/_media/img.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
doc/_content/qa/_media/img_1.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
doc/_content/qa/_media/img_2.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
doc/_content/qa/_media/img_3.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
doc/_content/qa/_media/img_4.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
doc/_content/qa/_media/img_5.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
19
doc/_content/qa/bug.md
Normal file
@@ -0,0 +1,19 @@
|
||||
<!-- 反馈bug -->
|
||||
# 反馈bug
|
||||
代码是在不断的完善的,不断修改会修复旧的问题也有可能引入新的问题,所以遇到BUG是很正常的一件事。所以遇到问题不要烦燥,咱们就事论事就好了。
|
||||
## 如何反馈
|
||||
1. 更新代码,很可能你遇到问题别人已经更早的遇到了,或者是作者自己发现了,已经解决了,所以你可以更新代码再次进行测试;
|
||||
2. 可以在github提ISSUE,我几乎每天都会去看issue,你的问题我会尽快给予答复;
|
||||
3. 你可以来我的QQ群里,询问群友看看是否遇到了同样的问题;
|
||||
4. 你可以私聊我的QQ,如果我有时间我会给你答复,但是除非你有明确的复现步骤或者修复方案,否则你可能等不到我的答复。
|
||||
|
||||
## 如何快速解决BUG
|
||||
目前解决BUG有三种方式:
|
||||
1. 作者验证以及修复;
|
||||
2. 热心开发者提来的PR;
|
||||
3. 使用运维手段屏蔽BUG的影响。
|
||||
|
||||
- 对于第一种:详细的复现步骤,完整的抓包文件,有条理的错误分析都可以帮助作者复现问题,进而解决问题。解决问题往往不是最难的,复现才是。
|
||||
- 对于第二种:如果你是开发者,你已经发现了造成BUG的原因以及知道如何正确的修复,那么我很希望你PR,SRS的大佬经常说的,开源不是一个人的事。所以你的参与就是最大的鼓励。
|
||||
- 对于第三种:如果你有一个有经验的运维伙伴,那么部分问题是可以通过运维的手段暂时屏蔽的,在等待修复的这段时间了以保证项目的运行。
|
||||
|
||||
15
doc/_content/qa/development.md
Normal file
@@ -0,0 +1,15 @@
|
||||
<!-- 参与开发 -->
|
||||
# 参与到开发中来
|
||||
非常欢迎有兴趣的小伙伴一起来维护这个项目
|
||||
## 与开发有关的信息
|
||||
- 开发语言:后端java + 前端vue;
|
||||
- jdk版本: 1.8;
|
||||
- 作者自用开发ide: jetbrains intellij idea;
|
||||
- nodejs/npm版本:v10.19.0/6.14.4;
|
||||
- 后端使用Spring boot框架开发;
|
||||
- 项目大量使用了异步操作;
|
||||
- 跟代码学流程需要参考28181文档,只看代码你会很懵的;
|
||||
- 必须学会[抓包](_content/skill/tcpdump.md),这是必须的
|
||||
|
||||
## 提交代码
|
||||
大家可以通过fork项目的方式提交自己的代码,然后提交PR,我来合并到主线。提交代码的过程中我们需要遵循“**阿里编码规约**”,现有代码也有很多代码没有做到,但是我们在朝这个方向努力。
|
||||
BIN
doc/_content/qa/img.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
57
doc/_content/qa/play_error.md
Normal file
@@ -0,0 +1,57 @@
|
||||
<!-- 点播错误 -->
|
||||
# 点播错误
|
||||
排查点播错误你首先要清除[点播的基本流程](_content/theory/play.md),一般的流程如下:
|
||||
```plantuml
|
||||
@startuml
|
||||
"WEB用户" -> "WVP-PRO": 1. 发起点播请求
|
||||
"设备" <- "WVP-PRO": 2. Invite(携带SDP消息体)
|
||||
"设备" --> "WVP-PRO": 3. 200OK(携带SDP消息体)
|
||||
"设备" <-- "WVP-PRO": 4. Ack
|
||||
"设备" -> "ZLMediaKit": 5. 发送实时流
|
||||
"WVP-PRO" <- "ZLMediaKit": 6. 流改变事件
|
||||
"WEB用户" <-- "WVP-PRO": 7. 回复流播放地址(携带流地址)
|
||||
"WVP-PRO" <- "ZLMediaKit": 8. 无人观看事件
|
||||
"设备" <- "WVP-PRO": 9 Bye消息
|
||||
"设备" --> "WVP-PRO": 10 200OK
|
||||
@enduml
|
||||
```
|
||||
针对几种常见的错误,我们来分析一下,也方便大家对号入座解决常见的问题
|
||||
## 点播收到错误码
|
||||
这个错误一般表现为点击"播放"按钮后很快得到一个错误。
|
||||
1. **400错误码**
|
||||
出现400错误玛时一般是这样的流程是这样的
|
||||
```plantuml
|
||||
@startuml
|
||||
"WEB用户" -> "WVP-PRO": 1. 发起点播请求
|
||||
"设备" <- "WVP-PRO": 2. Invite(携带SDP消息体)
|
||||
"设备" --> "WVP-PRO": 3. 400错误
|
||||
@enduml
|
||||
```
|
||||
此时通常是设备认为WVP发送了错误的消息给它,它认为消息不全或者错误所以直接返回400错误,此时我们需要[抓包](_content/skill/tcpdump.md)来分析是否缺失了内容,也可以直接联系对方询问为什么返回了400。
|
||||
WVP不能保证兼容所有的设备,有些实现不规范的设备可能在对接时就会出现上述问题,你可以联系作者帮忙对接。
|
||||
2. **500错误码**
|
||||
500或者大于500小于600的错误码一般多是设备内部出了问题,解决方式有两个,第一种直接联系设备/平台客服寻求解决;第二种,如果你有确定可以对接这个设备的平台那么可以把对接这个平台的抓包和对接wvp的抓包同时发送给我,我来尝试解决。
|
||||
|
||||
|
||||
## 点播超时
|
||||
点播超时的情况大致分为两种:点播超时和收流超时
|
||||
1. **点播超时**
|
||||
点播超时错误一般为信令的超时,比如长时间为收到对方的回复,可能出现在流程中 “3. 200OK(携带SDP消息体)”这个位置,即我们发送点播消息,但是设备没有回复,可能的原因:
|
||||
> 1. 设备内部错误,未能回复消息
|
||||
> 2. 网络原因消息未到到达设备
|
||||
|
||||
大部分时候是原因2,所以遇到这个错误我们首先要排查我们我的网路,如果你是公网部署,那么也可能时心跳周期太长,导致的路由NAT失效,WVP的消息无法通道原来的IP端口号发送给设备。
|
||||
|
||||
2. **收流超时**
|
||||
收流超时可能发生在流程中的5和6,可能的原因有:
|
||||
> 1. 设备发送了流但是发送到了错误的ip和端口上,而这个信息是在invite消息的sdp中指定的,就是流程2Invite(携带SDP消息体)中,而这个错误很可能来自你的配置错误,比如你设置了127.0.0.1导致设备网127.0.0.1上发流,或者是你WVP在公网,但是你给设备了一个内网ip,导致设备无法把流发送过来;
|
||||
> 2. 设备内部错误未发送流;
|
||||
> 2. 设备发送了流,但是流无法识别,可能存在于流不规范和网络很差的情况下;
|
||||
> 3. 设备发送了流,zlm也收到了,但是zlm无法通过hook通知到wvp,此时原因是你可以检查zlm的配置文件中的hook配置,看看是否无法从zlm连接到wvp;
|
||||
> 4. 设备发送了流,但是开启SSRC校验,设备的流不够规范采用错误的ssrc,导致zlm选择丢弃;
|
||||
|
||||
针对这些可能的错误原因我建议的排查顺序:
|
||||
- 关闭ssrc校验;
|
||||
- 查看zlm配置的hook是否可以连接到zlm;
|
||||
- 查看zlm日志是否有流注册;
|
||||
- 抓包查看流的信息,看看流是否正常发送,甚至可以导出发送原始流,用vlc播放,看看是否可以播放。
|
||||
8
doc/_content/qa/regiser_error.md
Normal file
@@ -0,0 +1,8 @@
|
||||
<!-- 设备注册不上来的解决办法 -->
|
||||
# 设备注册不上来的解决办法
|
||||
一般的原因有两个
|
||||
1. 信息填写错误,比如密码错误;
|
||||
2. 网络不通导致注册消息无法发送到WVP;
|
||||
|
||||
|
||||
遇到问题首先仔细校验填写信息,例如海康可能需要勾选鉴权才可以输入密码。网络问题请自行测试。
|
||||
24
doc/_content/qa/start_error.md
Normal file
@@ -0,0 +1,24 @@
|
||||
<!-- 启动时报错 -->
|
||||
# 启动时报错
|
||||
启动时的报错大部分时候是因为你的配置有问题,比如mysql没连接上,redis没连接上,18080/15060端口占用了,这些都会导致启动是报错,修改配置配置之后都可以解决;
|
||||
下面我整理的一些常见的错误,大家可以先对号入座的简单排查下。
|
||||
> **常见错误**
|
||||
|
||||

|
||||
**错误原因:** redis配置错误,可能原因: redis未启动/ip错误/端口错误/网络不通
|
||||
---
|
||||

|
||||
**错误原因:** redis配置错误,可能原因: 密码错误
|
||||
---
|
||||

|
||||
**错误原因:** mysql配置错误,可能原因: mysql未启动/ip错误/端口错误/网络不通
|
||||
---
|
||||

|
||||
**错误原因:** mysql配置错误,可能原因: 用户名/密码错误
|
||||
---
|
||||

|
||||
**错误原因:** SIP配置错误,可能原因: SIP端口被占用
|
||||
---
|
||||

|
||||
**错误原因:** WVP Tomcat端口配置错误,可能原因: server.port端口被占用
|
||||
---
|
||||