1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00
Commit graph

43 commits

Author SHA1 Message Date
winlin
c12deded98 GB28181: Fix bug for parsing GB to RTC. 2022-10-07 19:47:34 +08:00
Winlin
5a420ece3b
GB28181: Support GB28181-2016 protocol. v5.0.74 (#3201)
01. Support GB config as StreamCaster.
02. Support disable GB by --gb28181=off.
03. Add utests for SIP examples.
04. Wireshark plugin to decode TCP/9000 as rtp.rfc4571
05. Support MPEGPS program stream codec.
06. Add utest for PS stream codec.
07. Decode MPEGPS packet stream.
08. Carry RTP and PS packet as helper in PS message.
09. Support recover from error mode.
10. Support process by a pack of PS/TS messages.
11. Add statistic for recovered and msgs dropped.
12. Recover from err position fastly.
13. Define state machine for GB session.
14. Bind context to GB session.
15. Re-invite when media disconnected.
16. Update GitHub actions with GB28181.
17. Support parse CANDIDATE by env or pip.
18. Support mux GB28181 to RTMP.
19. Support regression test by srs-bench.
2022-10-06 17:40:58 +08:00
winlin
efdbf37255 Squash: Move GB28181 to feature/gb28181. 5.0.4 2021-06-16 14:03:55 +08:00
winlin
15901cacee SquashSRS4: Use SPDX-License-Identifier: MIT. 5.0.3 2021-05-31 13:42:20 +08:00
cfw11
4d6f00e6bf
GB28181: fix parse rtp-tcp failed (#2378)
* fix parse rtp-tcp failed

* fix parse rtp-tcp failed

Co-authored-by: cfw <fangwei.cheng@transwarp.io>
2021-05-28 21:19:05 +08:00
xialixin
2e14d80aa4 SquashSRS4: Refine GB28181 2021-05-18 09:11:57 +08:00
winlin
e3bca883e1 SuqashSRS4: Build SRT native 2021-05-16 16:14:00 +08:00
winlin
aa07f45545 SquashSRS4: Happy 2021 2021-04-20 19:03:02 +08:00
xialixin@kanzhun.com
4df6fa540f For #2200, Enable RTC and FLV for GB28181 2021-02-18 21:51:49 +08:00
xbpeng121
47422b7819
GB28181: 无法对接平台问题及一些小bug (#2109)
* 1-新增srs_string_split2函数,该函数支持空串也能按照原有顺序进行切分并放入数组
2-SrsGb28181Device增加属性字段,并在收到catalog命令时能够更新该属性
3-修复sip包解包不严谨bug(body中有可能会有SRS_RTSP_CRLFCRLF那么导致header_body[1]就不一定是body了可能只是body的一部分)

* 1-修复停用rtp多路复用参数(invite_port_fixed)不起作用bug

* bugfix: 当srs发送invite时会指定一个ssrc作为流媒体序列号,但有些平台发流时并不使用这个作为ssrc,而是自己新生成一个。(修复该bug是在invite response时解析内容中的sdp,把对方生成的流媒体序列号ssrc读出来,并且更新srs的channel映射)

* Update push.gb28181.conf

恢复成原来的conf

* bugfix,在取得muxer时需要更新。之前写反了

* Merge branch 'develop' into 4.0release

* 解决冲突时,优先选择原有代码(还原选择develop的代码)

* 解决冲突时,优先选择原有代码(还原选择develop的代码)

* 解决冲突时,优先选择原有代码(还原选择develop的代码)

* 解决冲突时,优先选择原有代码(还原选择develop的代码)

* 修改sdp_map相同属性的连接符

* 解决冲突时,优先选择原有代码(还原选择develop的代码)

* 修改sdp_map相同属性的连接符

* 解决冲突时,优先选择原有代码(还原选择develop的代码)

* 解决冲突时,优先选择原有代码(还原选择develop的代码)

* 回退原来代码

* 删除parse_sdp存储至map相关代码

* 格式恢复

* 格式恢复

* 恢复格式

* srs_string_split() 函数的bugfix

Co-authored-by: xbpeng <xianbin.peng@sibat.cn>
2021-01-06 15:37:02 +08:00
PieerePi
3d5c18c25a
GB28181 code crashed in ffmpeg after commit "RTC: Use FFmpeg to transcode aac to opus" <d5a0ad3dd8>. (#2057)
Change the size from 64K to 256K.
2020-11-30 11:02:30 +08:00
Jesse Xi
8515f5a91e
incomplete_len 在大华摄像头下,因为大华包头对音频的不标准处理,可能为负值,而sizeof(SrsPsPacketStartCode) 返回的是unsigned 类型, 因些增加判断 (#2039)
Co-authored-by: jesse.xi <jj.xi@tianrang-inc.com>
2020-11-17 16:44:37 +08:00
winlin
c779d95246 GB28181: Remove chinese comments. 2020-11-16 00:06:03 +08:00
Pieere Pi
ffae1720ec gb28181模块可用性增强
主要改动,
1. 支持作为GB/T 28181上级平台
2. 新的目录接口sip_query_devicelist (/api/v1/gb28181?action=sip_query_devicelist)
3. 各种异常和问题修复
4. 其他一些小改动

以上改动基于feature/rtc分支,因为需要网页用WebRTC来拉GB28181的监控流,gb28181分支代码有点老了。

下面的序号n是指第n个差异块("@@ -"之间的内容)。

srs_gb28181.html
1. 原页面上多加了一个端口号
2-4. 给摄像头加上名称显示
5. 查询目录去掉chid
6. 删除通道参数分解为id和chid
7. API端口固定为1985

srs_app_gb28181.cpp
1-4. 四处因为错误而退出GB28181媒体处理循环,修改为不退出
5. payload为空异常
6. 修正判断startcode越界一个字符导致内存写越界的问题
ps流有可能末尾是全零填充,而且越界的那个字符正好是0x01,这样会多出一个nalu(末尾的三个0x00和一个越界的0x01),后面写video_data内存越界(if (first_pos != pre_pos){块,此处size - pre_pos - 4为-1,uint32_t naluLen得到的值为0,video_data[pre_pos+3] = p[0];写越界)破坏了其他数据,后续video_stream析构出错程序异常退出。
7. 此处srs后来已修复
8. 更新ssrc为被叫返回的值
原代码只支持标准中的《点播域内设备媒体流SSRC处理方式》(设备注册上来),不支持《点播外域设备媒体流SSRC处理方式》(即作为上级平台)。
这是因为如果srs作为上级平台,ssrc不是自己生成的,而是下级平台生成的。
9. 删除通道参数分解为id和chid
10. notify_sip_unregister后delete_stream_channel无效
11. notify_sip_query_catalog清空内存中的设备列表
12. 新函数query_device_list

srs_app_gb28181.hpp
1. update_rtmpmuxer_to_newssrc_by_id声明
2. 新函数get_gb28181_config_ptr和函数delete_stream_channel声明修改
3. 新函数query_device_list

srs_app_gb28181_sip.cpp
1-4. 在调试界面给摄像头加上名称显示;新函数clear_device_list和新函数dumpItemList
5-6. 两处因为错误而退出GB28181信令处理循环,修改为不退出
7. 设备注册上来,不检查服务器ID匹不匹配(支持作为上级平台)
8. 收到一个目录上报消息,更新内存中的数据
9. 更新ssrc为被叫返回的值
10. 新函数query_device_list

srs_app_gb28181_sip.hpp
1. 在调试界面给摄像头加上名称显示
2. 每个设备加上item_list,用于存储目录;新函数clear_device_list和新函数dumpItemList
3. 新函数clear_device_list

srs_app_http_api.cpp
1. 删除通道参数分解为id和chid
2. 新的接口sip_query_devicelist,用于查询所有设备的目录

srs_sip_stack.cpp
1. GB2312转UTF-8类
2. 被叫返回的ssrc初始化
3. parse_xml声明修改
4. 对XML内容进行字符集检测和转换
5-7. parse_xml定义修改
8. SIP BODY里面也有可能有\r\n
9-10. 防止恶意SIP消息 by vicious sip prober
11-12. 新的XML解析目录代码
13. 获取被叫返回的ssrc

srs_sip_stack.hpp
1. 依赖vector
2. 每个设备加上item_list,用于存储目录
3. 被叫返回的ssrc
4. parse_xml声明修改
2020-11-15 23:14:34 +08:00
yinjiaoyuan
fe65c7bf84 For 2034, GB28181: Support transport over TCP 2020-11-15 22:50:59 +08:00
winlin
1661876633 Fix build fail 2020-09-19 10:41:58 +08:00
winlin
64705d1cc8 RTC: Refine resouce management 2020-09-19 10:30:05 +08:00
winlin
4eae93d27b Rename SrsCoroutineManager to SrsConnectionManager 2020-09-11 17:20:41 +08:00
winlin
2f22a3d38b For #1926, refine code 2020-08-30 12:43:55 +08:00
jasongwq
7e5572c5e1 FIX:When 28181 stream stopped,Stream API does not remove it 2020-08-30 12:42:23 +08:00
kyxlx550
d02b560217 remove 28181 is_aac define 2020-08-30 12:06:34 +08:00
kyxlx550
5864ea3472 supprot ps jitbuffer different timestamp of audio and video 2020-08-30 12:06:34 +08:00
kyxlx550
65a23418ed notes w_ps_file define 2020-07-02 09:06:05 +08:00
kyxlx550
1bbf5c8126 fix ps to h264 frame_size < 0 checkt 2020-07-02 09:06:05 +08:00
kyxlx550
83c2586d79 support audio g711 2020-07-02 09:06:05 +08:00
kyxlx550
e506191484 fix rtmp muxer cycle sleep 2020-07-02 09:06:05 +08:00
kyxlx550
ed82d60aac fix while sleep time 2020-06-08 18:27:03 +08:00
kyxlx550
2172209321 ps to rtmp via source, h264 start code with replace nalulen 2020-06-07 21:51:06 +08:00
winlin
215b1c234b Refine the local ip and interface retrieve 2020-05-09 10:40:25 +08:00
kyxlx550
6a070a9a64 support sip ptz cmd 2020-04-20 21:34:18 +08:00
kyxlx550
fb23739113 fix use gb28181 log id 2020-04-17 17:03:03 +08:00
kyxlx550
33b91cd6f2 fix gb28181 api error code 2020-04-16 12:30:11 +08:00
kyxlx550
28bde1d448 fix rtmp send timeout, first key frame wait 2020-04-11 20:36:28 +08:00
winlin
cf48a5594d Refactor code for #1691 2020-04-09 08:37:28 +08:00
xialixin
d2b8b937d6 fix generate ssrc, rtmp muxer cycle sleep, ps steam parase etc.. 2020-04-05 13:53:14 +08:00
xialixin
92d351ef35 fix 'output' format define; support 'host' auto get; time config use SRS internal format; support auto create stream channel on/off 2020-04-04 16:07:23 +08:00
xialixin
5e4fdfd1d4 fix after RTMP is closed, empty PPS and SPS. sip client sockaddr set 2020-04-04 16:07:23 +08:00
xialixin
ac8acc0b22 fix 28281 to 28181, sip heart message, timeout channel peer ip and port reset 2020-04-04 16:07:23 +08:00
winlin
d81cde695d Refactor code 2020-03-31 22:48:38 +08:00
winlin
6012ac4eb0 Refine code 2020-03-31 22:30:57 +08:00
xialixin
c99fb99ab6 refactor gb28181, supporting SIP server enable, multiplex, API interface 2020-03-31 00:39:10 +08:00
xialixin
8b4f84e336 fix push.gb28181.conf, gb28181conn repeat call serve() 2020-03-20 10:38:38 +08:00
xialixin
cbe9c1dabc Support gb28181 sip over udp, ps steam over rtp 2020-03-20 00:01:48 +08:00