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
a22a6baf
Commit
a22a6baf
authored
4 years ago
by
xia-chu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加流量统计事件
parent
0c5fa36e
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
38 行增加
和
4 行删除
+38
-4
server/WebApi.cpp
+2
-2
webrtc/WebRtcTransport.cpp
+31
-1
webrtc/WebRtcTransport.h
+5
-1
没有找到文件。
server/WebApi.cpp
查看文件 @
a22a6baf
...
...
@@ -1104,7 +1104,7 @@ void installWebApi() {
throw
runtime_error
(
StrPrinter
<<
"播放鉴权失败:"
<<
err
);
}
auto
rtc
=
WebRtcTransportImp
::
create
(
EventPollerPool
::
Instance
().
getPoller
());
rtc
->
attach
(
src
,
true
);
rtc
->
attach
(
src
,
info
,
true
);
val
[
"sdp"
]
=
rtc
->
getAnswerSdp
(
offer_sdp
);
val
[
"type"
]
=
"answer"
;
invoker
(
200
,
headerOut
,
val
.
toStyledString
());
...
...
@@ -1138,7 +1138,7 @@ void installWebApi() {
push_src
->
setProtocolTranslation
(
enableHls
,
enableMP4
);
auto
rtc
=
WebRtcTransportImp
::
create
(
EventPollerPool
::
Instance
().
getPoller
());
push_src
->
setListener
(
rtc
);
rtc
->
attach
(
push_src
,
false
);
rtc
->
attach
(
push_src
,
info
,
false
);
val
[
"sdp"
]
=
rtc
->
getAnswerSdp
(
offer_sdp
);
val
[
"type"
]
=
"answer"
;
invoker
(
200
,
headerOut
,
val
.
toStyledString
());
...
...
This diff is collapsed.
Click to expand it.
webrtc/WebRtcTransport.cpp
查看文件 @
a22a6baf
...
...
@@ -285,10 +285,37 @@ WebRtcTransportImp::~WebRtcTransportImp() {
void
WebRtcTransportImp
::
onDestory
()
{
WebRtcTransport
::
onDestory
();
uint64_t
duration
=
_alive_ticker
.
createdTime
()
/
1000
;
//流量统计事件广播
GET_CONFIG
(
uint32_t
,
iFlowThreshold
,
General
::
kFlowThreshold
);
if
(
_play_src
)
{
WarnP
(
_socket
)
<<
"RTC播放器("
<<
_media_info
.
_vhost
<<
"/"
<<
_media_info
.
_app
<<
"/"
<<
_media_info
.
_streamid
<<
")结束播放,耗时(s):"
<<
duration
;
if
(
_bytes_usage
>=
iFlowThreshold
*
1024
)
{
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_media_info
,
_bytes_usage
,
duration
,
true
,
static_cast
<
SockInfo
&>
(
*
_socket
));
}
}
if
(
_push_src
)
{
WarnP
(
_socket
)
<<
"RTC推流器("
<<
_media_info
.
_vhost
<<
"/"
<<
_media_info
.
_app
<<
"/"
<<
_media_info
.
_streamid
<<
")结束推流,耗时(s):"
<<
duration
;
if
(
_bytes_usage
>=
iFlowThreshold
*
1024
)
{
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_media_info
,
_bytes_usage
,
duration
,
false
,
static_cast
<
SockInfo
&>
(
*
_socket
));
}
}
}
void
WebRtcTransportImp
::
attach
(
const
RtspMediaSource
::
Ptr
&
src
,
bool
is_play
)
{
void
WebRtcTransportImp
::
attach
(
const
RtspMediaSource
::
Ptr
&
src
,
const
MediaInfo
&
info
,
bool
is_play
)
{
assert
(
src
);
_media_info
=
info
;
if
(
is_play
)
{
_play_src
=
src
;
}
else
{
...
...
@@ -455,6 +482,7 @@ private:
};
void
WebRtcTransportImp
::
onRtcp
(
const
char
*
buf
,
size_t
len
)
{
_bytes_usage
+=
len
;
auto
rtcps
=
RtcpHeader
::
loadFromBytes
((
char
*
)
buf
,
len
);
for
(
auto
rtcp
:
rtcps
)
{
switch
((
RtcpType
)
rtcp
->
pt
)
{
...
...
@@ -504,6 +532,7 @@ void WebRtcTransportImp::onRtcp(const char *buf, size_t len) {
}
void
WebRtcTransportImp
::
onRtp
(
const
char
*
buf
,
size_t
len
)
{
_bytes_usage
+=
len
;
_alive_ticker
.
resetTime
();
RtpHeader
*
rtp
=
(
RtpHeader
*
)
buf
;
//根据接收到的rtp的pt信息,找到该流的信息
...
...
@@ -549,6 +578,7 @@ void WebRtcTransportImp::onSendRtp(const RtpPacket::Ptr &rtp, bool flush){
//忽略,对方不支持该编码类型
return
;
}
_bytes_usage
+=
rtp
->
size
()
-
RtpPacket
::
kRtpTcpHeaderSize
;
sendRtpPacket
(
rtp
->
data
()
+
RtpPacket
::
kRtpTcpHeaderSize
,
rtp
->
size
()
-
RtpPacket
::
kRtpTcpHeaderSize
,
flush
,
pt
);
//统计rtp发送情况,好做sr汇报
_rtp_info_pt
[
pt
].
rtcp_context_send
->
onRtp
(
rtp
->
getSeq
(),
rtp
->
getStampMS
(),
rtp
->
size
()
-
RtpPacket
::
kRtpTcpHeaderSize
);
...
...
This diff is collapsed.
Click to expand it.
webrtc/WebRtcTransport.h
查看文件 @
a22a6baf
...
...
@@ -127,7 +127,7 @@ public:
* @param src 媒体源
* @param is_play 是播放还是推流
*/
void
attach
(
const
RtspMediaSource
::
Ptr
&
src
,
bool
is_play
=
true
);
void
attach
(
const
RtspMediaSource
::
Ptr
&
src
,
const
MediaInfo
&
info
,
bool
is_play
=
true
);
protected
:
void
onStartWebRTC
()
override
;
...
...
@@ -176,6 +176,10 @@ private:
void
onBeforeSortedRtp
(
const
RtpPayloadInfo
&
info
,
const
RtpPacket
::
Ptr
&
rtp
);
private
:
//用掉的总流量
uint64_t
_bytes_usage
=
0
;
//媒体相关元数据
MediaInfo
_media_info
;
//保持自我强引用
Ptr
_self
;
//检测超时的定时器
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论