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
39dd886e
Commit
39dd886e
authored
Sep 02, 2023
by
xia-chu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化获取播放器列表相关功能
parent
d286ac1d
显示空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
68 行增加
和
27 行删除
+68
-27
3rdpart/ZLToolKit
+1
-1
server/WebApi.cpp
+10
-8
src/Common/MediaSource.h
+3
-3
src/FMP4/FMP4MediaSource.h
+2
-2
src/Http/HttpSession.cpp
+10
-2
src/Record/HlsMediaSource.cpp
+6
-0
src/Record/HlsMediaSource.h
+5
-0
src/Rtmp/FlvMuxer.cpp
+5
-1
src/Rtmp/RtmpMediaSource.h
+2
-2
src/Rtmp/RtmpSession.cpp
+5
-1
src/Rtsp/RtspMediaSource.h
+2
-2
src/Rtsp/RtspSession.cpp
+5
-1
src/TS/TSMediaSource.h
+2
-2
srt/SrtTransportImp.cpp
+5
-1
webrtc/WebRtcPlayer.cpp
+5
-1
没有找到文件。
ZLToolKit
@
97f9b9a2
Subproject commit
d7dd07ddd968ad8f927da2c655e13956be116cef
Subproject commit
97f9b9a2ac58353f72f085830690d27833b8ad88
server/WebApi.cpp
查看文件 @
39dd886e
...
...
@@ -795,22 +795,24 @@ void installWebApi() {
throw
ApiRetException
(
"can not find the stream"
,
API
::
NotFound
);
}
src
->
getPlayerList
(
[
=
](
const
std
::
list
<
std
::
shared_ptr
<
void
>
>
&
info_list
)
mutable
{
[
=
](
const
std
::
list
<
toolkit
::
Any
>
&
info_list
)
mutable
{
val
[
"code"
]
=
API
::
Success
;
auto
&
data
=
val
[
"data"
];
data
=
Value
(
arrayValue
);
for
(
auto
&
info
:
info_list
)
{
auto
obj
=
static_pointer_cast
<
Value
>
(
info
);
data
.
append
(
std
::
move
(
*
obj
));
auto
&
obj
=
info
.
get
<
Value
>
(
);
data
.
append
(
std
::
move
(
obj
));
}
invoker
(
200
,
headerOut
,
val
.
toStyledString
());
},
[](
std
::
shared_ptr
<
void
>
&&
info
)
->
std
::
shared_ptr
<
void
>
{
[](
toolkit
::
Any
&&
info
)
->
toolkit
::
Any
{
auto
obj
=
std
::
make_shared
<
Value
>
();
auto
session
=
static_pointer_cast
<
Session
>
(
info
);
fillSockInfo
(
*
obj
,
session
.
get
());
(
*
obj
)[
"typeid"
]
=
toolkit
::
demangle
(
typeid
(
*
session
).
name
());
return
obj
;
auto
&
sock
=
info
.
get
<
SockInfo
>
();
fillSockInfo
(
*
obj
,
&
sock
);
(
*
obj
)[
"typeid"
]
=
toolkit
::
demangle
(
typeid
(
sock
).
name
());
toolkit
::
Any
ret
;
ret
.
set
(
obj
);
return
ret
;
});
});
...
...
src/Common/MediaSource.h
查看文件 @
39dd886e
...
...
@@ -347,10 +347,10 @@ public:
// 观看者个数,包括(hls/rtsp/rtmp)
virtual
int
totalReaderCount
();
// 获取播放器列表
virtual
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
std
::
shared_ptr
<
void
>
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
std
::
shared_ptr
<
void
>
(
std
::
shared_ptr
<
void
>
&&
info
)
>
&
on_change
)
{
virtual
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
toolkit
::
Any
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
toolkit
::
Any
(
toolkit
::
Any
&&
info
)
>
&
on_change
)
{
assert
(
cb
);
cb
(
std
::
list
<
std
::
shared_ptr
<
void
>
>
());
cb
(
std
::
list
<
toolkit
::
Any
>
());
}
// 获取媒体源类型
...
...
src/FMP4/FMP4MediaSource.h
查看文件 @
39dd886e
...
...
@@ -51,8 +51,8 @@ public:
return
_ring
;
}
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
std
::
shared_ptr
<
void
>
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
std
::
shared_ptr
<
void
>
(
std
::
shared_ptr
<
void
>
&&
info
)
>
&
on_change
)
override
{
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
toolkit
::
Any
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
toolkit
::
Any
(
toolkit
::
Any
&&
info
)
>
&
on_change
)
override
{
_ring
->
getInfoList
(
cb
,
on_change
);
}
...
...
src/Http/HttpSession.cpp
查看文件 @
39dd886e
...
...
@@ -338,7 +338,11 @@ bool HttpSession::checkLiveStreamFMP4(const function<void()> &cb) {
weak_ptr
<
HttpSession
>
weak_self
=
static_pointer_cast
<
HttpSession
>
(
shared_from_this
());
fmp4_src
->
pause
(
false
);
_fmp4_reader
=
fmp4_src
->
getRing
()
->
attach
(
getPoller
());
_fmp4_reader
->
setGetInfoCB
([
weak_self
]()
{
return
weak_self
.
lock
();
});
_fmp4_reader
->
setGetInfoCB
([
weak_self
]()
{
Any
ret
;
ret
.
set
(
static_pointer_cast
<
SockInfo
>
(
weak_self
.
lock
()));
return
ret
;
});
_fmp4_reader
->
setDetachCB
([
weak_self
]()
{
auto
strong_self
=
weak_self
.
lock
();
if
(
!
strong_self
)
{
...
...
@@ -378,7 +382,11 @@ bool HttpSession::checkLiveStreamTS(const function<void()> &cb) {
weak_ptr
<
HttpSession
>
weak_self
=
static_pointer_cast
<
HttpSession
>
(
shared_from_this
());
ts_src
->
pause
(
false
);
_ts_reader
=
ts_src
->
getRing
()
->
attach
(
getPoller
());
_ts_reader
->
setGetInfoCB
([
weak_self
]()
{
return
weak_self
.
lock
();
});
_ts_reader
->
setGetInfoCB
([
weak_self
]()
{
Any
ret
;
ret
.
set
(
static_pointer_cast
<
SockInfo
>
(
weak_self
.
lock
()));
return
ret
;
});
_ts_reader
->
setDetachCB
([
weak_self
]()
{
auto
strong_self
=
weak_self
.
lock
();
if
(
!
strong_self
)
{
...
...
src/Record/HlsMediaSource.cpp
查看文件 @
39dd886e
...
...
@@ -33,6 +33,12 @@ void HlsCookieData::addReaderCount() {
// HlsMediaSource已经销毁
*
added
=
false
;
});
auto
info
=
_sock_info
;
_ring_reader
->
setGetInfoCB
([
info
]()
{
Any
ret
;
ret
.
set
(
info
);
return
ret
;
});
}
}
}
...
...
src/Record/HlsMediaSource.h
查看文件 @
39dd886e
...
...
@@ -58,6 +58,11 @@ public:
void
onSegmentSize
(
size_t
bytes
)
{
_speed
[
TrackVideo
]
+=
bytes
;
}
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
toolkit
::
Any
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
toolkit
::
Any
(
toolkit
::
Any
&&
info
)
>
&
on_change
)
override
{
_ring
->
getInfoList
(
cb
,
on_change
);
}
private
:
RingType
::
Ptr
_ring
;
std
::
string
_index_file
;
...
...
src/Rtmp/FlvMuxer.cpp
查看文件 @
39dd886e
...
...
@@ -46,7 +46,11 @@ void FlvMuxer::start(const EventPoller::Ptr &poller, const RtmpMediaSource::Ptr
std
::
weak_ptr
<
FlvMuxer
>
weak_self
=
getSharedPtr
();
media
->
pause
(
false
);
_ring_reader
=
media
->
getRing
()
->
attach
(
poller
);
_ring_reader
->
setGetInfoCB
([
weak_self
]()
{
return
dynamic_pointer_cast
<
HttpSession
>
(
weak_self
.
lock
());
});
_ring_reader
->
setGetInfoCB
([
weak_self
]()
{
Any
ret
;
ret
.
set
(
dynamic_pointer_cast
<
SockInfo
>
(
weak_self
.
lock
()));
return
ret
;
});
_ring_reader
->
setDetachCB
([
weak_self
]()
{
auto
strong_self
=
weak_self
.
lock
();
if
(
!
strong_self
)
{
...
...
src/Rtmp/RtmpMediaSource.h
查看文件 @
39dd886e
...
...
@@ -57,8 +57,8 @@ public:
return
_ring
;
}
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
std
::
shared_ptr
<
void
>
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
std
::
shared_ptr
<
void
>
(
std
::
shared_ptr
<
void
>
&&
info
)
>
&
on_change
)
override
{
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
toolkit
::
Any
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
toolkit
::
Any
(
toolkit
::
Any
&&
info
)
>
&
on_change
)
override
{
_ring
->
getInfoList
(
cb
,
on_change
);
}
...
...
src/Rtmp/RtmpSession.cpp
查看文件 @
39dd886e
...
...
@@ -306,7 +306,11 @@ void RtmpSession::sendPlayResponse(const string &err, const RtmpMediaSource::Ptr
src
->
pause
(
false
);
_ring_reader
=
src
->
getRing
()
->
attach
(
getPoller
());
weak_ptr
<
RtmpSession
>
weak_self
=
static_pointer_cast
<
RtmpSession
>
(
shared_from_this
());
_ring_reader
->
setGetInfoCB
([
weak_self
]()
{
return
weak_self
.
lock
();
});
_ring_reader
->
setGetInfoCB
([
weak_self
]()
{
Any
ret
;
ret
.
set
(
static_pointer_cast
<
SockInfo
>
(
weak_self
.
lock
()));
return
ret
;
});
_ring_reader
->
setReadCB
([
weak_self
](
const
RtmpMediaSource
::
RingDataType
&
pkt
)
{
auto
strong_self
=
weak_self
.
lock
();
if
(
!
strong_self
)
{
...
...
src/Rtsp/RtspMediaSource.h
查看文件 @
39dd886e
...
...
@@ -53,8 +53,8 @@ public:
return
_ring
;
}
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
std
::
shared_ptr
<
void
>
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
std
::
shared_ptr
<
void
>
(
std
::
shared_ptr
<
void
>
&&
info
)
>
&
on_change
)
override
{
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
toolkit
::
Any
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
toolkit
::
Any
(
toolkit
::
Any
&&
info
)
>
&
on_change
)
override
{
_ring
->
getInfoList
(
cb
,
on_change
);
}
...
...
src/Rtsp/RtspSession.cpp
查看文件 @
39dd886e
...
...
@@ -857,7 +857,11 @@ void RtspSession::handleReq_Play(const Parser &parser) {
if
(
!
_play_reader
&&
_rtp_type
!=
Rtsp
::
RTP_MULTICAST
)
{
weak_ptr
<
RtspSession
>
weak_self
=
static_pointer_cast
<
RtspSession
>
(
shared_from_this
());
_play_reader
=
play_src
->
getRing
()
->
attach
(
getPoller
(),
use_gop
);
_play_reader
->
setGetInfoCB
([
weak_self
]()
{
return
weak_self
.
lock
();
});
_play_reader
->
setGetInfoCB
([
weak_self
]()
{
Any
ret
;
ret
.
set
(
static_pointer_cast
<
SockInfo
>
(
weak_self
.
lock
()));
return
ret
;
});
_play_reader
->
setDetachCB
([
weak_self
]()
{
auto
strong_self
=
weak_self
.
lock
();
if
(
!
strong_self
)
{
...
...
src/TS/TSMediaSource.h
查看文件 @
39dd886e
...
...
@@ -50,8 +50,8 @@ public:
return
_ring
;
}
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
std
::
shared_ptr
<
void
>
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
std
::
shared_ptr
<
void
>
(
std
::
shared_ptr
<
void
>
&&
info
)
>
&
on_change
)
override
{
void
getPlayerList
(
const
std
::
function
<
void
(
const
std
::
list
<
toolkit
::
Any
>
&
info_list
)
>
&
cb
,
const
std
::
function
<
toolkit
::
Any
(
toolkit
::
Any
&&
info
)
>
&
on_change
)
override
{
_ring
->
getInfoList
(
cb
,
on_change
);
}
...
...
srt/SrtTransportImp.cpp
查看文件 @
39dd886e
...
...
@@ -224,7 +224,11 @@ void SrtTransportImp::doPlay() {
ts_src
->
pause
(
false
);
strong_self
->
_ts_reader
=
ts_src
->
getRing
()
->
attach
(
strong_self
->
getPoller
());
weak_ptr
<
Session
>
weak_session
=
strong_self
->
getSession
();
strong_self
->
_ts_reader
->
setGetInfoCB
([
weak_session
]()
{
return
weak_session
.
lock
();
});
strong_self
->
_ts_reader
->
setGetInfoCB
([
weak_session
]()
{
Any
ret
;
ret
.
set
(
static_pointer_cast
<
SockInfo
>
(
weak_session
.
lock
()));
return
ret
;
});
strong_self
->
_ts_reader
->
setDetachCB
([
weak_self
]()
{
auto
strong_self
=
weak_self
.
lock
();
if
(
!
strong_self
)
{
...
...
webrtc/WebRtcPlayer.cpp
查看文件 @
39dd886e
...
...
@@ -48,7 +48,11 @@ void WebRtcPlayer::onStartWebRTC() {
_reader
=
playSrc
->
getRing
()
->
attach
(
getPoller
(),
true
);
weak_ptr
<
WebRtcPlayer
>
weak_self
=
static_pointer_cast
<
WebRtcPlayer
>
(
shared_from_this
());
weak_ptr
<
Session
>
weak_session
=
static_pointer_cast
<
Session
>
(
getSession
());
_reader
->
setGetInfoCB
([
weak_session
]()
{
return
weak_session
.
lock
();
});
_reader
->
setGetInfoCB
([
weak_session
]()
{
Any
ret
;
ret
.
set
(
static_pointer_cast
<
SockInfo
>
(
weak_session
.
lock
()));
return
ret
;
});
_reader
->
setReadCB
([
weak_self
](
const
RtspMediaSource
::
RingDataType
&
pkt
)
{
auto
strong_self
=
weak_self
.
lock
();
if
(
!
strong_self
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论