Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
060b6542
Commit
060b6542
authored
4 years ago
by
ziyue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改rtp超时检测相关http api,rtp超时检测最多暂停5分钟
parent
d475191d
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
18 行增加
和
55 行删除
+18
-55
server/WebApi.cpp
+10
-17
src/Rtp/RtpProcess.cpp
+7
-1
src/Rtp/RtpProcess.h
+1
-0
src/Rtp/RtpServer.cpp
+0
-27
src/Rtp/RtpServer.h
+0
-10
没有找到文件。
server/WebApi.cpp
查看文件 @
060b6542
...
@@ -844,30 +844,23 @@ void installWebApi() {
...
@@ -844,30 +844,23 @@ void installWebApi() {
CHECK_SECRET
();
CHECK_SECRET
();
CHECK_ARGS
(
"stream_id"
);
CHECK_ARGS
(
"stream_id"
);
//只是暂停流的检查,流媒体服务器做为流负载服务,收流就转发,RTSP/RTMP有自己暂停协议
//只是暂停流的检查,流媒体服务器做为流负载服务,收流就转发,RTSP/RTMP有自己暂停协议
lock_guard
<
recursive_mutex
>
lck
(
s_rtpServerMapMtx
);
auto
rtp_process
=
RtpSelector
::
Instance
().
getProcess
(
allArgs
[
"stream_id"
],
false
);
auto
it
=
s_rtpServerMap
.
find
(
allArgs
[
"stream_id"
]);
if
(
rtp_process
)
{
if
(
it
==
s_rtpServerMap
.
end
())
{
rtp_process
->
setStopCheckRtp
(
true
);
val
[
"hit"
]
=
0
;
}
else
{
return
;
val
[
"code"
]
=
API
::
NotFound
;
}
}
auto
server
=
it
->
second
;
server
->
pauseRtpCheck
(
allArgs
[
"stream_id"
]);
val
[
"hit"
]
=
1
;
});
});
api_regist
(
"/index/api/resumeRtpCheck"
,
[](
API_ARGS_MAP
)
{
api_regist
(
"/index/api/resumeRtpCheck"
,
[](
API_ARGS_MAP
)
{
CHECK_SECRET
();
CHECK_SECRET
();
CHECK_ARGS
(
"stream_id"
);
CHECK_ARGS
(
"stream_id"
);
auto
rtp_process
=
RtpSelector
::
Instance
().
getProcess
(
allArgs
[
"stream_id"
],
false
);
lock_guard
<
recursive_mutex
>
lck
(
s_rtpServerMapMtx
);
if
(
rtp_process
)
{
auto
it
=
s_rtpServerMap
.
find
(
allArgs
[
"stream_id"
]);
rtp_process
->
setStopCheckRtp
(
false
);
if
(
it
==
s_rtpServerMap
.
end
())
{
}
else
{
val
[
"hit"
]
=
0
;
val
[
"code"
]
=
API
::
NotFound
;
return
;
}
}
auto
server
=
it
->
second
;
server
->
resumeRtpCheck
(
allArgs
[
"stream_id"
]);
val
[
"hit"
]
=
1
;
});
});
#endif//ENABLE_RTPPROXY
#endif//ENABLE_RTPPROXY
...
...
This diff is collapsed.
Click to expand it.
src/Rtp/RtpProcess.cpp
查看文件 @
060b6542
...
@@ -127,9 +127,15 @@ void RtpProcess::addTrackCompleted() {
...
@@ -127,9 +127,15 @@ void RtpProcess::addTrackCompleted() {
bool
RtpProcess
::
alive
()
{
bool
RtpProcess
::
alive
()
{
if
(
_stop_rtp_check
.
load
())
{
if
(
_stop_rtp_check
.
load
())
{
return
true
;
if
(
_last_check_alive
.
elapsedTime
()
>
5
*
60
*
1000
){
//最多暂停5分钟的rtp超时检测,因为NAT映射有效期一般不会太长
_stop_rtp_check
=
false
;
}
else
{
return
true
;
}
}
}
_last_check_alive
.
elapsedTime
();
GET_CONFIG
(
uint64_t
,
timeoutSec
,
RtpProxy
::
kTimeoutSec
)
GET_CONFIG
(
uint64_t
,
timeoutSec
,
RtpProxy
::
kTimeoutSec
)
if
(
_last_frame_time
.
elapsedTime
()
/
1000
<
timeoutSec
)
{
if
(
_last_frame_time
.
elapsedTime
()
/
1000
<
timeoutSec
)
{
return
true
;
return
true
;
...
...
This diff is collapsed.
Click to expand it.
src/Rtp/RtpProcess.h
查看文件 @
060b6542
...
@@ -94,6 +94,7 @@ private:
...
@@ -94,6 +94,7 @@ private:
MultiMediaSourceMuxer
::
Ptr
_muxer
;
MultiMediaSourceMuxer
::
Ptr
_muxer
;
atomic_bool
_stop_rtp_check
{
false
};
atomic_bool
_stop_rtp_check
{
false
};
atomic_flag
_busy_flag
{
false
};
atomic_flag
_busy_flag
{
false
};
Ticker
_last_check_alive
;
};
};
}
//namespace mediakit
}
//namespace mediakit
...
...
This diff is collapsed.
Click to expand it.
src/Rtp/RtpServer.cpp
查看文件 @
060b6542
...
@@ -160,31 +160,5 @@ uint16_t RtpServer::getPort() {
...
@@ -160,31 +160,5 @@ uint16_t RtpServer::getPort() {
return
_udp_server
?
_udp_server
->
get_local_port
()
:
0
;
return
_udp_server
?
_udp_server
->
get_local_port
()
:
0
;
}
}
void
RtpServer
::
pauseRtpCheck
(
const
string
&
stream_id
){
if
(
_rtp_process
)
_rtp_process
->
setStopCheckRtp
(
true
);
else
{
if
(
!
stream_id
.
empty
()){
auto
rtp_process
=
RtpSelector
::
Instance
().
getProcess
(
stream_id
,
false
);
if
(
rtp_process
)
rtp_process
->
setStopCheckRtp
(
true
);
}
}
}
void
RtpServer
::
resumeRtpCheck
(
const
string
&
stream_id
){
if
(
_rtp_process
)
_rtp_process
->
setStopCheckRtp
(
false
);
else
{
//解决不指定流或者TCP收流无法暂停
if
(
!
stream_id
.
empty
()){
auto
rtp_process
=
RtpSelector
::
Instance
().
getProcess
(
stream_id
,
false
);
if
(
rtp_process
)
rtp_process
->
setStopCheckRtp
(
false
);
}
}
}
}
//namespace mediakit
}
//namespace mediakit
#endif//defined(ENABLE_RTPPROXY)
#endif//defined(ENABLE_RTPPROXY)
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/Rtp/RtpServer.h
查看文件 @
060b6542
...
@@ -57,16 +57,6 @@ public:
...
@@ -57,16 +57,6 @@ public:
*/
*/
void
setOnDetach
(
const
function
<
void
()
>
&
cb
);
void
setOnDetach
(
const
function
<
void
()
>
&
cb
);
/**
* 暂停Rtp服务的RTP流检测
*/
void
pauseRtpCheck
(
const
string
&
stream_id
=
""
);
/**
* 恢复Rtp服务的RTP流检测
*/
void
resumeRtpCheck
(
const
string
&
stream_id
=
""
);
protected
:
protected
:
Socket
::
Ptr
_udp_server
;
Socket
::
Ptr
_udp_server
;
TcpServer
::
Ptr
_tcp_server
;
TcpServer
::
Ptr
_tcp_server
;
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论