mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
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声明修改
This commit is contained in:
parent
fe65c7bf84
commit
ffae1720ec
8 changed files with 370 additions and 53 deletions
|
@ -465,7 +465,12 @@
|
|||
var url = null;
|
||||
|
||||
var query = parse_query_string();
|
||||
$("#txt_api_url").val("http://" + query.host + ":1985")
|
||||
var query_host = query.host.split(':');
|
||||
if (query_host && query_host.length == 2) {
|
||||
$("#txt_api_url").val("http://" + query_host[0] + ":1985");
|
||||
} else {
|
||||
$("#txt_api_url").val("http://" + query.host + ":1985");
|
||||
}
|
||||
|
||||
var __active_dar = null;
|
||||
function select_dar(dar_id, num, den) {
|
||||
|
@ -588,7 +593,7 @@
|
|||
for (idx2 in devices)
|
||||
{
|
||||
//href="javascript:void(0)" onclick="fn(this)">
|
||||
var id = "-->" + devices[idx2].device_id + ":" + devices[idx2].device_status + ":" + devices[idx2].invite_status;
|
||||
var id = "-->" + devices[idx2].device_name + ":" + devices[idx2].device_id + ":" + devices[idx2].device_status + ":" + devices[idx2].invite_status;
|
||||
var li = "<li><a id='linkChannelId1' href='javascript:void(0)' onclick='sipSessionOnClick(this)' rel='"+ session.id + "'>" +id + "</a></li>";
|
||||
$("#sipSessionList").append(li);
|
||||
}
|
||||
|
@ -1007,7 +1012,7 @@
|
|||
var str = text.split("-->");
|
||||
id = str[0];
|
||||
var str2 = str[1].split(":")
|
||||
chid = str2[0];
|
||||
chid = str2[1];
|
||||
|
||||
url = $("#txt_api_url").val();
|
||||
var apiurl = url + "/api/v1/gb28181?action=sip_invite&id=" + id + "&chid="+chid;
|
||||
|
@ -1026,7 +1031,7 @@
|
|||
var str = text.split("-->");
|
||||
id = str[0];
|
||||
var str2 = str[1].split(":")
|
||||
chid = str2[0];
|
||||
chid = str2[1];
|
||||
|
||||
url = $("#txt_api_url").val();
|
||||
var apiurl = url + "/api/v1/gb28181?action=sip_bye&id=" + id + "&chid="+chid;
|
||||
|
@ -1048,7 +1053,7 @@
|
|||
chid = str2[0];
|
||||
|
||||
url = $("#txt_api_url").val();
|
||||
var apiurl = url + "/api/v1/gb28181?action=sip_query_catalog&id=" + id + "&chid="+chid;
|
||||
var apiurl = url + "/api/v1/gb28181?action=sip_query_catalog&id=" + id;
|
||||
var ret = http_get(apiurl);
|
||||
$('#sipSessionMessage').html(syntaxHighlight(ret));
|
||||
if (ret != undefined && ret.code == 0){
|
||||
|
@ -1069,9 +1074,17 @@
|
|||
});
|
||||
|
||||
$("#btn_delete_channel").click(function(){
|
||||
var id = $("#gb28181ChannelId").text();
|
||||
var str = $("#gb28181ChannelId").text();
|
||||
var str_array = str.split("@")
|
||||
var chid = "";
|
||||
var id = "";
|
||||
if (str_array.length != 2){
|
||||
return;
|
||||
}
|
||||
id = str_array[0];
|
||||
chid = str_array[1];
|
||||
url = $("#txt_api_url").val();
|
||||
var apiurl = url + "/api/v1/gb28181?action=delete_channel&id=" + id;
|
||||
var apiurl = url + "/api/v1/gb28181?action=delete_channel&id=" + id + "&chid="+chid;
|
||||
var ret = http_get(apiurl);
|
||||
$('#gb28181ChannelMessage').html(syntaxHighlight(ret));
|
||||
if (ret != undefined && ret.code == 0){
|
||||
|
@ -1190,7 +1203,8 @@
|
|||
return pc.setLocalDescription(offer).then(function(){ return offer; });
|
||||
}).then(function(offer) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var port = urlObject.port || 1985;
|
||||
// var port = urlObject.port || 1985;
|
||||
var port = 1985;
|
||||
|
||||
// @see https://github.com/rtcdn/rtcdn-draft
|
||||
var api = urlObject.user_query.play || '/rtc/v1/play/';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue