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
9b305bd4
Commit
9b305bd4
authored
4 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化HLS播放个数统计
parent
d26b7512
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
12 行增加
和
30 行删除
+12
-30
src/Record/HlsMediaSource.cpp
+0
-6
src/Record/HlsMediaSource.h
+12
-24
没有找到文件。
src/Record/HlsMediaSource.cpp
查看文件 @
9b305bd4
...
...
@@ -23,9 +23,7 @@ void HlsCookieData::addReaderCount(){
if
(
!*
_added
){
auto
src
=
dynamic_pointer_cast
<
HlsMediaSource
>
(
MediaSource
::
find
(
HLS_SCHEMA
,
_info
.
_vhost
,
_info
.
_app
,
_info
.
_streamid
));
if
(
src
){
src
->
modifyReaderCount
(
true
);
*
_added
=
true
;
_src
=
src
;
_ring_reader
=
src
->
getRing
()
->
attach
(
EventPollerPool
::
Instance
().
getPoller
());
auto
added
=
_added
;
_ring_reader
->
setDetachCB
([
added
](){
...
...
@@ -38,10 +36,6 @@ void HlsCookieData::addReaderCount(){
HlsCookieData
::~
HlsCookieData
()
{
if
(
*
_added
)
{
auto
src
=
_src
.
lock
();
if
(
src
)
{
src
->
modifyReaderCount
(
false
);
}
uint64_t
duration
=
(
_ticker
.
createdTime
()
-
_ticker
.
elapsedTime
())
/
1000
;
WarnL
<<
_sock_info
->
getIdentifier
()
<<
"("
<<
_sock_info
->
get_peer_ip
()
<<
":"
<<
_sock_info
->
get_peer_port
()
<<
") "
<<
"HLS播放器("
<<
_info
.
_vhost
<<
"/"
<<
_info
.
_app
<<
"/"
<<
_info
.
_streamid
...
...
This diff is collapsed.
Click to expand it.
src/Record/HlsMediaSource.h
查看文件 @
9b305bd4
...
...
@@ -21,11 +21,7 @@ public:
friend
class
HlsCookieData
;
typedef
RingBuffer
<
string
>
RingType
;
typedef
std
::
shared_ptr
<
HlsMediaSource
>
Ptr
;
HlsMediaSource
(
const
string
&
vhost
,
const
string
&
app
,
const
string
&
stream_id
)
:
MediaSource
(
HLS_SCHEMA
,
vhost
,
app
,
stream_id
){
_reader_count
=
0
;
_ring
=
std
::
make_shared
<
RingType
>
();
}
HlsMediaSource
(
const
string
&
vhost
,
const
string
&
app
,
const
string
&
stream_id
)
:
MediaSource
(
HLS_SCHEMA
,
vhost
,
app
,
stream_id
){}
~
HlsMediaSource
()
override
=
default
;
/**
...
...
@@ -37,10 +33,9 @@ public:
/**
* 获取播放器个数
* @return
*/
int
readerCount
()
override
{
return
_r
eader_count
.
load
()
;
return
_r
ing
?
_ring
->
readerCount
()
:
0
;
}
/**
...
...
@@ -50,6 +45,15 @@ public:
void
registHls
(
bool
file_created
){
if
(
!
_is_regist
)
{
_is_regist
=
true
;
weak_ptr
<
HlsMediaSource
>
weakSelf
=
dynamic_pointer_cast
<
HlsMediaSource
>
(
shared_from_this
());
auto
lam
=
[
weakSelf
](
int
size
)
{
auto
strongSelf
=
weakSelf
.
lock
();
if
(
!
strongSelf
)
{
return
;
}
strongSelf
->
onReaderChanged
(
size
);
};
_ring
=
std
::
make_shared
<
RingType
>
(
0
,
std
::
move
(
lam
));
onReaderChanged
(
0
);
regist
();
}
...
...
@@ -69,29 +73,14 @@ public:
});
}
void
waitForFile
(
function
<
void
()
>
cb
){
void
waitForFile
(
function
<
void
()
>
cb
)
{
//等待生成m3u8文件
lock_guard
<
mutex
>
lck
(
_mtx_cb
);
_list_cb
.
emplace_back
(
std
::
move
(
cb
));
}
private
:
/**
* 修改观看者个数
* @param add 添加海思删除
*/
void
modifyReaderCount
(
bool
add
)
{
if
(
add
)
{
++
_reader_count
;
}
else
{
--
_reader_count
;
}
onReaderChanged
(
_reader_count
);
}
private
:
bool
_is_regist
=
false
;
atomic_int
_reader_count
;
RingType
::
Ptr
_ring
;
mutex
_mtx_cb
;
List
<
function
<
void
()
>
>
_list_cb
;
...
...
@@ -111,7 +100,6 @@ private:
atomic
<
uint64_t
>
_bytes
{
0
};
MediaInfo
_info
;
std
::
shared_ptr
<
bool
>
_added
;
weak_ptr
<
HlsMediaSource
>
_src
;
Ticker
_ticker
;
std
::
shared_ptr
<
SockInfo
>
_sock_info
;
HlsMediaSource
::
RingType
::
RingReader
::
Ptr
_ring_reader
;
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论