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
9f06dc3a
Commit
9f06dc3a
authored
3 years ago
by
ziyue
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:ZLMediaKit/ZLMediaKit
parents
0aff3b80
dd30ab22
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
23 行增加
和
9 行删除
+23
-9
src/Rtmp/FlvMuxer.cpp
+10
-2
src/Rtmp/FlvMuxer.h
+3
-1
src/Rtmp/RtmpProtocol.cpp
+2
-1
src/Rtmp/RtmpProtocol.h
+2
-0
webrtc/WebRtcTransport.cpp
+4
-3
webrtc/WebRtcTransport.h
+2
-2
没有找到文件。
src/Rtmp/FlvMuxer.cpp
查看文件 @
9f06dc3a
...
@@ -16,6 +16,10 @@
...
@@ -16,6 +16,10 @@
namespace
mediakit
{
namespace
mediakit
{
FlvMuxer
::
FlvMuxer
(){
_packet_pool
.
setSize
(
64
);
}
void
FlvMuxer
::
start
(
const
EventPoller
::
Ptr
&
poller
,
const
RtmpMediaSource
::
Ptr
&
media
)
{
void
FlvMuxer
::
start
(
const
EventPoller
::
Ptr
&
poller
,
const
RtmpMediaSource
::
Ptr
&
media
)
{
if
(
!
media
)
{
if
(
!
media
)
{
throw
std
::
runtime_error
(
"RtmpMediaSource 无效"
);
throw
std
::
runtime_error
(
"RtmpMediaSource 无效"
);
...
@@ -62,15 +66,19 @@ void FlvMuxer::start(const EventPoller::Ptr &poller, const RtmpMediaSource::Ptr
...
@@ -62,15 +66,19 @@ void FlvMuxer::start(const EventPoller::Ptr &poller, const RtmpMediaSource::Ptr
});
});
}
}
BufferRaw
::
Ptr
FlvMuxer
::
obtainBuffer
()
{
return
_packet_pool
.
obtain
();
}
BufferRaw
::
Ptr
FlvMuxer
::
obtainBuffer
(
const
void
*
data
,
size_t
len
)
{
BufferRaw
::
Ptr
FlvMuxer
::
obtainBuffer
(
const
void
*
data
,
size_t
len
)
{
auto
buffer
=
BufferRaw
::
create
();
auto
buffer
=
obtainBuffer
();
buffer
->
assign
((
const
char
*
)
data
,
len
);
buffer
->
assign
((
const
char
*
)
data
,
len
);
return
buffer
;
return
buffer
;
}
}
void
FlvMuxer
::
onWriteFlvHeader
(
const
RtmpMediaSource
::
Ptr
&
src
)
{
void
FlvMuxer
::
onWriteFlvHeader
(
const
RtmpMediaSource
::
Ptr
&
src
)
{
//发送flv文件头
//发送flv文件头
auto
buffer
=
BufferRaw
::
create
();
auto
buffer
=
obtainBuffer
();
buffer
->
setCapacity
(
sizeof
(
FLVHeader
));
buffer
->
setCapacity
(
sizeof
(
FLVHeader
));
buffer
->
setSize
(
sizeof
(
FLVHeader
));
buffer
->
setSize
(
sizeof
(
FLVHeader
));
...
...
This diff is collapsed.
Click to expand it.
src/Rtmp/FlvMuxer.h
查看文件 @
9f06dc3a
...
@@ -22,7 +22,7 @@ namespace mediakit {
...
@@ -22,7 +22,7 @@ namespace mediakit {
class
FlvMuxer
{
class
FlvMuxer
{
public
:
public
:
using
Ptr
=
std
::
shared_ptr
<
FlvMuxer
>
;
using
Ptr
=
std
::
shared_ptr
<
FlvMuxer
>
;
FlvMuxer
()
=
default
;
FlvMuxer
();
virtual
~
FlvMuxer
()
=
default
;
virtual
~
FlvMuxer
()
=
default
;
void
stop
();
void
stop
();
...
@@ -39,8 +39,10 @@ private:
...
@@ -39,8 +39,10 @@ private:
void
onWriteFlvTag
(
const
RtmpPacket
::
Ptr
&
pkt
,
uint32_t
time_stamp
,
bool
flush
);
void
onWriteFlvTag
(
const
RtmpPacket
::
Ptr
&
pkt
,
uint32_t
time_stamp
,
bool
flush
);
void
onWriteFlvTag
(
uint8_t
type
,
const
Buffer
::
Ptr
&
buffer
,
uint32_t
time_stamp
,
bool
flush
);
void
onWriteFlvTag
(
uint8_t
type
,
const
Buffer
::
Ptr
&
buffer
,
uint32_t
time_stamp
,
bool
flush
);
BufferRaw
::
Ptr
obtainBuffer
(
const
void
*
data
,
size_t
len
);
BufferRaw
::
Ptr
obtainBuffer
(
const
void
*
data
,
size_t
len
);
BufferRaw
::
Ptr
obtainBuffer
();
private
:
private
:
ResourcePool
<
BufferRaw
>
_packet_pool
;
//时间戳修整器
//时间戳修整器
Stamp
_stamp
[
2
];
Stamp
_stamp
[
2
];
RtmpMediaSource
::
RingType
::
RingReader
::
Ptr
_ring_reader
;
RtmpMediaSource
::
RingType
::
RingReader
::
Ptr
_ring_reader
;
...
...
This diff is collapsed.
Click to expand it.
src/Rtmp/RtmpProtocol.cpp
查看文件 @
9f06dc3a
...
@@ -55,6 +55,7 @@ static string openssl_HMACsha256(const void *key, size_t key_len, const void *da
...
@@ -55,6 +55,7 @@ static string openssl_HMACsha256(const void *key, size_t key_len, const void *da
namespace
mediakit
{
namespace
mediakit
{
RtmpProtocol
::
RtmpProtocol
()
{
RtmpProtocol
::
RtmpProtocol
()
{
_packet_pool
.
setSize
(
64
);
_next_step_func
=
[
this
](
const
char
*
data
,
size_t
len
)
{
_next_step_func
=
[
this
](
const
char
*
data
,
size_t
len
)
{
return
handle_C0C1
(
data
,
len
);
return
handle_C0C1
(
data
,
len
);
};
};
...
@@ -776,7 +777,7 @@ void RtmpProtocol::handle_chunk(RtmpPacket::Ptr packet) {
...
@@ -776,7 +777,7 @@ void RtmpProtocol::handle_chunk(RtmpPacket::Ptr packet) {
}
}
BufferRaw
::
Ptr
RtmpProtocol
::
obtainBuffer
(
const
void
*
data
,
size_t
len
)
{
BufferRaw
::
Ptr
RtmpProtocol
::
obtainBuffer
(
const
void
*
data
,
size_t
len
)
{
auto
buffer
=
BufferRaw
::
create
();
auto
buffer
=
_packet_pool
.
obtain
();
if
(
data
&&
len
)
{
if
(
data
&&
len
)
{
buffer
->
assign
((
const
char
*
)
data
,
len
);
buffer
->
assign
((
const
char
*
)
data
,
len
);
}
}
...
...
This diff is collapsed.
Click to expand it.
src/Rtmp/RtmpProtocol.h
查看文件 @
9f06dc3a
...
@@ -107,6 +107,8 @@ private:
...
@@ -107,6 +107,8 @@ private:
function
<
const
char
*
(
const
char
*
data
,
size_t
len
)
>
_next_step_func
;
function
<
const
char
*
(
const
char
*
data
,
size_t
len
)
>
_next_step_func
;
////////////Chunk////////////
////////////Chunk////////////
unordered_map
<
int
,
std
::
pair
<
RtmpPacket
::
Ptr
/*now*/
,
RtmpPacket
::
Ptr
/*last*/
>
>
_map_chunk_data
;
unordered_map
<
int
,
std
::
pair
<
RtmpPacket
::
Ptr
/*now*/
,
RtmpPacket
::
Ptr
/*last*/
>
>
_map_chunk_data
;
//循环池
ResourcePool
<
BufferRaw
>
_packet_pool
;
};
};
}
/* namespace mediakit */
}
/* namespace mediakit */
...
...
This diff is collapsed.
Click to expand it.
webrtc/WebRtcTransport.cpp
查看文件 @
9f06dc3a
...
@@ -313,6 +313,7 @@ void WebRtcTransportImp::onCreate(){
...
@@ -313,6 +313,7 @@ void WebRtcTransportImp::onCreate(){
WebRtcTransportImp
::
WebRtcTransportImp
(
const
EventPoller
::
Ptr
&
poller
)
:
WebRtcTransport
(
poller
)
{
WebRtcTransportImp
::
WebRtcTransportImp
(
const
EventPoller
::
Ptr
&
poller
)
:
WebRtcTransport
(
poller
)
{
InfoL
<<
getIdentifier
();
InfoL
<<
getIdentifier
();
_packet_pool
.
setSize
(
64
);
}
}
WebRtcTransportImp
::~
WebRtcTransportImp
()
{
WebRtcTransportImp
::~
WebRtcTransportImp
()
{
...
@@ -329,7 +330,7 @@ void WebRtcTransportImp::onSendSockData(const char *buf, size_t len, struct sock
...
@@ -329,7 +330,7 @@ void WebRtcTransportImp::onSendSockData(const char *buf, size_t len, struct sock
WarnL
<<
"send data failed:"
<<
len
;
WarnL
<<
"send data failed:"
<<
len
;
return
;
return
;
}
}
auto
ptr
=
BufferRaw
::
create
();
auto
ptr
=
_packet_pool
.
obtain
();
ptr
->
assign
(
buf
,
len
);
ptr
->
assign
(
buf
,
len
);
//一次性发送一帧的rtp数据,提高网络io性能
//一次性发送一帧的rtp数据,提高网络io性能
_session
->
setSendFlushFlag
(
flush
);
_session
->
setSendFlushFlag
(
flush
);
...
@@ -385,10 +386,10 @@ void WebRtcTransportImp::onStartWebRTC() {
...
@@ -385,10 +386,10 @@ void WebRtcTransportImp::onStartWebRTC() {
_ssrc_to_track
[
track
->
offer_ssrc_rtx
]
=
track
;
_ssrc_to_track
[
track
->
offer_ssrc_rtx
]
=
track
;
//rtp pt --> MediaTrack
//rtp pt --> MediaTrack
_pt_to_track
.
emplace
(
track
->
plan_rtp
->
pt
,
new
WrappedRtpTrack
(
track
,
_twcc_ctx
,
*
this
));
_pt_to_track
.
emplace
(
track
->
plan_rtp
->
pt
,
std
::
unique_ptr
<
WrappedMediaTrack
>
(
new
WrappedRtpTrack
(
track
,
_twcc_ctx
,
*
this
)
));
if
(
track
->
plan_rtx
)
{
if
(
track
->
plan_rtx
)
{
//rtx pt --> MediaTrack
//rtx pt --> MediaTrack
_pt_to_track
.
emplace
(
track
->
plan_rtx
->
pt
,
new
WrappedRtxTrack
(
track
));
_pt_to_track
.
emplace
(
track
->
plan_rtx
->
pt
,
std
::
unique_ptr
<
WrappedMediaTrack
>
(
new
WrappedRtxTrack
(
track
)
));
}
}
if
(
m_offer
->
type
!=
TrackApplication
)
{
if
(
m_offer
->
type
!=
TrackApplication
)
{
//记录rtp ext类型与id的关系,方便接收或发送rtp时修改rtp ext id
//记录rtp ext类型与id的关系,方便接收或发送rtp时修改rtp ext id
...
...
This diff is collapsed.
Click to expand it.
webrtc/WebRtcTransport.h
查看文件 @
9f06dc3a
...
@@ -214,8 +214,6 @@ struct WrappedRtpTrack : public WrappedMediaTrack {
...
@@ -214,8 +214,6 @@ struct WrappedRtpTrack : public WrappedMediaTrack {
void
inputRtp
(
const
char
*
buf
,
size_t
len
,
uint64_t
stamp_ms
,
RtpHeader
*
rtp
)
override
;
void
inputRtp
(
const
char
*
buf
,
size_t
len
,
uint64_t
stamp_ms
,
RtpHeader
*
rtp
)
override
;
};
};
class
WebRtcTransportImp
:
public
WebRtcTransport
{
class
WebRtcTransportImp
:
public
WebRtcTransport
{
public
:
public
:
using
Ptr
=
std
::
shared_ptr
<
WebRtcTransportImp
>
;
using
Ptr
=
std
::
shared_ptr
<
WebRtcTransportImp
>
;
...
@@ -281,6 +279,8 @@ private:
...
@@ -281,6 +279,8 @@ private:
unordered_map
<
uint32_t
/*ssrc*/
,
MediaTrack
::
Ptr
>
_ssrc_to_track
;
unordered_map
<
uint32_t
/*ssrc*/
,
MediaTrack
::
Ptr
>
_ssrc_to_track
;
//根据接收rtp的pt获取相关信息
//根据接收rtp的pt获取相关信息
unordered_map
<
uint8_t
/*pt*/
,
std
::
unique_ptr
<
WrappedMediaTrack
>>
_pt_to_track
;
unordered_map
<
uint8_t
/*pt*/
,
std
::
unique_ptr
<
WrappedMediaTrack
>>
_pt_to_track
;
//循环池
ResourcePool
<
BufferRaw
>
_packet_pool
;
};
};
class
WebRtcTransportManager
{
class
WebRtcTransportManager
{
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论