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
4b39fd48
Commit
4b39fd48
authored
4 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
动态创建rtp端口采用stream_id为索引
parent
a164b286
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
15 行增加
和
12 行删除
+15
-12
server/WebApi.cpp
+15
-12
没有找到文件。
server/WebApi.cpp
查看文件 @
4b39fd48
...
...
@@ -257,7 +257,7 @@ static recursive_mutex s_ffmpegMapMtx;
#if defined(ENABLE_RTPPROXY)
//rtp服务器列表
static
unordered_map
<
uint16_t
,
RtpServer
::
Ptr
>
s_rtpServerMap
;
static
unordered_map
<
string
,
RtpServer
::
Ptr
>
s_rtpServerMap
;
static
recursive_mutex
s_rtpServerMapMtx
;
#endif
...
...
@@ -759,38 +759,41 @@ void installWebApi() {
CHECK_SECRET
();
CHECK_ARGS
(
"port"
,
"enable_tcp"
,
"stream_id"
);
auto
stream_id
=
allArgs
[
"stream_id"
];
RtpServer
::
Ptr
server
=
std
::
make_shared
<
RtpServer
>
();
server
->
start
(
allArgs
[
"port"
],
allArgs
[
"stream_id"
]
,
allArgs
[
"enable_tcp"
].
as
<
bool
>
());
server
->
start
(
allArgs
[
"port"
],
stream_id
,
allArgs
[
"enable_tcp"
].
as
<
bool
>
());
auto
port
=
server
->
getPort
();
server
->
setOnDetach
([
port
]()
{
server
->
setOnDetach
([
stream_id
]()
{
//设置rtp超时移除事件
lock_guard
<
recursive_mutex
>
lck
(
s_rtpServerMapMtx
);
s_rtpServerMap
.
erase
(
port
);
s_rtpServerMap
.
erase
(
stream_id
);
});
//保存对象
lock_guard
<
recursive_mutex
>
lck
(
s_rtpServerMapMtx
);
s_rtpServerMap
.
emplace
(
port
,
server
);
//保存对象,强制覆盖
s_rtpServerMap
[
stream_id
]
=
server
;
//回复json
val
[
"port"
]
=
port
;
val
[
"port"
]
=
server
->
getPort
()
;
});
api_regist1
(
"/index/api/closeRtpServer"
,[](
API_ARGS1
){
CHECK_SECRET
();
CHECK_ARGS
(
"
port
"
);
CHECK_ARGS
(
"
stream_id
"
);
lock_guard
<
recursive_mutex
>
lck
(
s_rtpServerMapMtx
);
val
[
"hit"
]
=
(
int
)
s_rtpServerMap
.
erase
(
allArgs
[
"port"
].
as
<
uint16_t
>
()
);
val
[
"hit"
]
=
(
int
)
s_rtpServerMap
.
erase
(
allArgs
[
"stream_id"
]
);
});
api_regist1
(
"/index/api/listRtpServer"
,[](
API_ARGS1
){
CHECK_SECRET
();
lock_guard
<
recursive_mutex
>
lck
(
s_rtpServerMapMtx
);
for
(
auto
&
pr
:
s_rtpServerMap
){
val
[
"data"
].
append
(
pr
.
first
);
for
(
auto
&
pr
:
s_rtpServerMap
)
{
Value
obj
;
obj
[
"stream_id"
]
=
pr
.
first
;
obj
[
"port"
]
=
pr
.
second
->
getPort
();
val
[
"data"
].
append
(
obj
);
}
});
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论