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
c5561228
Commit
c5561228
authored
6 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
精简代码
parent
6fe90fe4
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
12 行增加
和
17 行删除
+12
-17
src/Rtsp/RtspPlayer.cpp
+1
-1
src/Rtsp/RtspSession.cpp
+9
-13
src/Rtsp/RtspSession.h
+2
-3
没有找到文件。
src/Rtsp/RtspPlayer.cpp
查看文件 @
c5561228
...
...
@@ -280,7 +280,7 @@ void RtspPlayer::handleResDESCRIBE(const Parser& parser) {
_aTrackInfo
=
_sdpAttr
.
getAvailableTrack
();
if
(
_aTrackInfo
.
empty
())
{
throw
std
::
runtime_error
(
"
解析SDP失败
"
);
throw
std
::
runtime_error
(
"
无有效的Sdp Track
"
);
}
if
(
!
onCheckSDP
(
strSdp
,
_sdpAttr
))
{
throw
std
::
runtime_error
(
"onCheckSDP faied"
);
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/RtspSession.cpp
查看文件 @
c5561228
...
...
@@ -664,7 +664,7 @@ bool RtspSession::handleReq_Setup() {
}
bool
RtspSession
::
handleReq_Play
()
{
if
(
_
uiTrackCnt
==
0
)
{
if
(
_
aTrackInfo
.
size
()
==
0
)
{
//还没有Describe
return
false
;
}
...
...
@@ -731,8 +731,8 @@ bool RtspSession::handleReq_Play() {
}
else
{
iStamp
=
pMediaSrc
->
getStamp
();
}
for
(
unsigned
int
i
=
0
;
i
<
_uiTrackCnt
;
i
++
)
{
auto
&
track
=
_aTrackInfo
[
i
];
for
(
auto
&
track
:
_aTrackInfo
){
track
->
ssrc
=
pMediaSrc
->
getSsrc
(
track
->
type
);
track
->
seq
=
pMediaSrc
->
getSeqence
(
track
->
type
);
track
->
timeStamp
=
pMediaSrc
->
getTimestamp
(
track
->
type
);
...
...
@@ -748,16 +748,15 @@ bool RtspSession::handleReq_Play() {
"RTP-Info: "
,
_iCseq
,
SERVER_NAME
,
RTSP_VERSION
,
RTSP_BUILDTIME
,
dateHeader
().
data
(),
_strSession
.
data
(),
iStamp
/
1000.0
);
for
(
unsigned
int
i
=
0
;
i
<
_uiTrackCnt
;
i
++
)
{
auto
&
track
=
_aTrackInfo
[
i
];
for
(
auto
&
track
:
_aTrackInfo
){
if
(
track
->
inited
==
false
)
{
//还有track没有setup
shutdown
();
return
;
}
iLen
+=
sprintf
(
_pcBuf
+
iLen
,
"url=%s/%s;seq=%d;rtptime=%u,"
,
_strUrl
.
data
(),
track
->
_control_surffix
.
data
(),
track
->
seq
,
track
->
timeStamp
);
iLen
+=
sprintf
(
_pcBuf
+
iLen
,
"url=%s/%s;seq=%d;rtptime=%u,"
,
_strUrl
.
data
(),
track
->
_control_surffix
.
data
(),
track
->
seq
,
track
->
timeStamp
);
}
iLen
-=
1
;
(
_pcBuf
)[
iLen
]
=
'\0'
;
iLen
+=
sprintf
(
_pcBuf
+
iLen
,
"
\r\n\r\n
"
);
...
...
@@ -897,21 +896,18 @@ inline bool RtspSession::findStream() {
_sdpAttr
.
load
(
_strSdp
);
_aTrackInfo
=
_sdpAttr
.
getAvailableTrack
();
_uiTrackCnt
=
_aTrackInfo
.
size
();
if
(
_
uiTrackCnt
==
0
||
_uiTrackCnt
>
2
)
{
if
(
_
aTrackInfo
.
empty
()
)
{
return
false
;
}
_strSession
=
makeRandStr
(
12
);
_pMediaSrc
=
pMediaSrc
;
for
(
unsigned
int
i
=
0
;
i
<
_uiTrackCnt
;
i
++
)
{
auto
&
track
=
_aTrackInfo
[
i
];
for
(
auto
&
track
:
_aTrackInfo
){
track
->
ssrc
=
pMediaSrc
->
getSsrc
(
track
->
type
);
track
->
seq
=
pMediaSrc
->
getSeqence
(
track
->
type
);
track
->
timeStamp
=
pMediaSrc
->
getTimestamp
(
track
->
type
);
}
return
true
;
}
...
...
@@ -972,7 +968,7 @@ inline void RtspSession::onRcvPeerUdpData(int iTrackIdx, const Buffer::Ptr &pBuf
_apPeerUdpAddr
[
iTrackIdx
/
2
].
reset
(
new
struct
sockaddr
(
addr
));
_abGotPeerUdp
[
iTrackIdx
/
2
]
=
true
;
_bGotAllPeerUdp
=
true
;
//先假设获取到完整的rtp探测包
for
(
unsigned
int
i
=
0
;
i
<
_
uiTrackCnt
;
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
_
aTrackInfo
.
size
()
;
i
++
)
{
if
(
!
_abGotPeerUdp
[
i
])
{
//还有track没获取到rtp探测包
_bGotAllPeerUdp
=
false
;
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/RtspSession.h
查看文件 @
c5561228
...
...
@@ -117,7 +117,7 @@ private:
return
tmp
;
}
inline
int
getTrackIndexByTrackType
(
TrackType
type
)
{
for
(
unsigned
int
i
=
0
;
i
<
_
uiTrackCnt
;
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
_
aTrackInfo
.
size
()
;
i
++
)
{
if
(
type
==
_aTrackInfo
[
i
]
->
type
)
{
return
i
;
}
...
...
@@ -125,7 +125,7 @@ private:
return
-
1
;
}
inline
int
getTrackIndexByControlSuffix
(
const
string
&
controlSuffix
)
{
for
(
unsigned
int
i
=
0
;
i
<
_
uiTrackCnt
;
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
_
aTrackInfo
.
size
()
;
i
++
)
{
if
(
controlSuffix
==
_aTrackInfo
[
i
]
->
_control_surffix
)
{
return
i
;
}
...
...
@@ -163,7 +163,6 @@ private:
int
_iCseq
=
0
;
SdpAttr
_sdpAttr
;
unsigned
int
_uiTrackCnt
=
0
;
//媒体track个数
vector
<
SdpTrack
::
Ptr
>
_aTrackInfo
;
bool
_bGotAllPeerUdp
=
false
;
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论