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
4b34e58d
Commit
4b34e58d
authored
Jul 20, 2021
by
ziyue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
移除MultiMuxerPrivate对象,修复rtp发送时无sps pps帧的问题
parent
902c25ae
全部展开
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
31 行增加
和
70 行删除
+31
-70
src/Common/MultiMediaSourceMuxer.cpp
+0
-0
src/Common/MultiMediaSourceMuxer.h
+30
-69
src/Rtmp/RtmpMediaSourceImp.h
+1
-1
没有找到文件。
src/Common/MultiMediaSourceMuxer.cpp
查看文件 @
4b34e58d
差异被折叠。
点击展开。
src/Common/MultiMediaSourceMuxer.h
查看文件 @
4b34e58d
...
...
@@ -23,10 +23,10 @@
namespace
mediakit
{
class
MultiM
uxerPrivate
:
public
MediaSink
,
public
std
::
enable_shared_from_this
<
MultiMuxerPrivate
>
{
class
MultiM
ediaSourceMuxer
:
public
MediaSourceEventInterceptor
,
public
MediaSink
,
public
std
::
enable_shared_from_this
<
MultiMediaSourceMuxer
>
{
public
:
friend
class
MultiMediaSourceMuxe
r
;
typedef
std
::
shared_ptr
<
MultiMuxerPrivate
>
Ptr
;
typedef
std
::
shared_ptr
<
MultiMediaSourceMuxer
>
Pt
r
;
class
Listener
{
public
:
Listener
()
=
default
;
...
...
@@ -34,43 +34,7 @@ public:
virtual
void
onAllTrackReady
()
=
0
;
};
~
MultiMuxerPrivate
()
override
;
private
:
MultiMuxerPrivate
(
const
string
&
vhost
,
const
string
&
app
,
const
string
&
stream
,
float
dur_sec
,
bool
enable_rtsp
,
bool
enable_rtmp
,
bool
enable_hls
,
bool
enable_mp4
);
void
resetTracks
()
override
;
void
setMediaListener
(
const
std
::
weak_ptr
<
MediaSourceEvent
>
&
listener
);
int
totalReaderCount
()
const
;
void
setTimeStamp
(
uint32_t
stamp
);
void
setTrackListener
(
Listener
*
listener
);
bool
setupRecord
(
MediaSource
&
sender
,
Recorder
::
type
type
,
bool
start
,
const
string
&
custom_path
,
size_t
max_second
);
bool
isRecording
(
MediaSource
&
sender
,
Recorder
::
type
type
);
bool
isEnabled
();
void
onTrackReady
(
const
Track
::
Ptr
&
track
)
override
;
void
onTrackFrame
(
const
Frame
::
Ptr
&
frame
)
override
;
void
onAllTrackReady
()
override
;
private
:
string
_stream_url
;
Listener
*
_track_listener
=
nullptr
;
RtmpMediaSourceMuxer
::
Ptr
_rtmp
;
RtspMediaSourceMuxer
::
Ptr
_rtsp
;
HlsRecorder
::
Ptr
_hls
;
MediaSinkInterface
::
Ptr
_mp4
;
TSMediaSourceMuxer
::
Ptr
_ts
;
#if defined(ENABLE_MP4)
FMP4MediaSourceMuxer
::
Ptr
_fmp4
;
#endif
std
::
weak_ptr
<
MediaSourceEvent
>
_listener
;
};
class
MultiMediaSourceMuxer
:
public
MediaSourceEventInterceptor
,
public
MediaSinkInterface
,
public
MultiMuxerPrivate
::
Listener
,
public
std
::
enable_shared_from_this
<
MultiMediaSourceMuxer
>
{
public
:
typedef
MultiMuxerPrivate
::
Listener
Listener
;
typedef
std
::
shared_ptr
<
MultiMediaSourceMuxer
>
Ptr
;
~
MultiMediaSourceMuxer
()
override
;
~
MultiMediaSourceMuxer
()
override
=
default
;
MultiMediaSourceMuxer
(
const
string
&
vhost
,
const
string
&
app
,
const
string
&
stream
,
float
dur_sec
=
0
.
0
,
bool
enable_rtsp
=
true
,
bool
enable_rtmp
=
true
,
bool
enable_hls
=
true
,
bool
enable_mp4
=
false
);
...
...
@@ -84,7 +48,7 @@ public:
* 随着Track就绪事件监听器
* @param listener 事件监听器
*/
void
setTrackListener
(
const
std
::
weak_ptr
<
MultiMuxerPrivate
::
Listener
>
&
listener
);
void
setTrackListener
(
const
std
::
weak_ptr
<
Listener
>
&
listener
);
/**
* 返回总的消费者个数
...
...
@@ -105,13 +69,6 @@ public:
/////////////////////////////////MediaSourceEvent override/////////////////////////////////
/**
* 获取所有Track
* @param trackReady 是否筛选过滤未就绪的track
* @return 所有Track
*/
vector
<
Track
::
Ptr
>
getTracks
(
MediaSource
&
sender
,
bool
trackReady
=
true
)
const
override
;
/**
* 观看总人数
* @param sender 事件发送者
* @return 观看总人数
...
...
@@ -150,48 +107,52 @@ public:
*/
bool
stopSendRtp
(
MediaSource
&
sender
,
const
string
&
ssrc
)
override
;
/////////////////////////////////MediaSinkInterface override/////////////////////////////////
/**
* 添加track,内部会调用Track的clone方法
* 只会克隆sps pps这些信息 ,而不会克隆Delegate相关关系
* @param track 添加音频或视频轨道
* 重置track
*/
void
addTrack
(
const
Track
::
Ptr
&
track
)
override
;
void
resetTracks
(
)
override
;
/**
* 添加track完毕
*/
void
addTrackCompleted
()
override
;
protected
:
/////////////////////////////////MediaSink override/////////////////////////////////
/**
* 重置track
* 某track已经准备好,其ready()状态返回true,
* 此时代表可以获取其例如sps pps等相关信息了
* @param track
*/
void
resetTracks
(
)
override
;
void
onTrackReady
(
const
Track
::
Ptr
&
track
)
override
;
/**
* 写入帧数据
* @param frame 帧
* 所有Track已经准备好,
*/
void
inputFrame
(
const
Frame
::
Ptr
&
frame
)
override
;
/////////////////////////////////MultiMuxerPrivate::Listener override/////////////////////////////////
void
onAllTrackReady
()
override
;
/**
* 所有track全部就绪
* 某Track输出frame,在onAllTrackReady触发后才会调用此方法
* @param frame
*/
void
on
AllTrackReady
(
)
override
;
void
on
TrackFrame
(
const
Frame
::
Ptr
&
frame
)
override
;
private
:
bool
_is_enable
=
false
;
string
_stream_url
;
Ticker
_last_check
;
Stamp
_stamp
[
2
];
MultiMuxerPrivate
::
Ptr
_muxer
;
std
::
weak_ptr
<
MultiMuxerPrivate
::
Listener
>
_track_listener
;
std
::
weak_ptr
<
Listener
>
_track_listener
;
#if defined(ENABLE_RTPPROXY)
mutex
_rtp_sender_mtx
;
unordered_map
<
string
,
RtpSender
::
Ptr
>
_rtp_sender
;
#endif //ENABLE_RTPPROXY
#if defined(ENABLE_MP4)
FMP4MediaSourceMuxer
::
Ptr
_fmp4
;
#endif
RtmpMediaSourceMuxer
::
Ptr
_rtmp
;
RtspMediaSourceMuxer
::
Ptr
_rtsp
;
TSMediaSourceMuxer
::
Ptr
_ts
;
MediaSinkInterface
::
Ptr
_mp4
;
HlsRecorder
::
Ptr
_hls
;
//对象个数统计
ObjectStatistic
<
MultiMediaSourceMuxer
>
_statistic
;
};
...
...
src/Rtmp/RtmpMediaSourceImp.h
查看文件 @
4b34e58d
...
...
@@ -127,7 +127,7 @@ public:
if
(
_recreate_metadata
)
{
//更新metadata
for
(
auto
&
track
:
_muxer
->
getTracks
(
*
this
))
{
for
(
auto
&
track
:
_muxer
->
MediaSink
::
getTracks
(
))
{
Metadata
::
addTrack
(
_metadata
,
track
);
}
RtmpMediaSource
::
updateMetaData
(
_metadata
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论