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
2edc4b1b
Commit
2edc4b1b
authored
6 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化代码
parent
7c7e9a7e
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
46 行增加
和
37 行删除
+46
-37
src/Player/PlayerBase.h
+2
-1
src/RTP/RtpMaker.h
+1
-0
src/RTP/RtpMakerAAC.h
+1
-1
src/RTP/RtpMakerH264.h
+1
-1
src/Rtsp/Rtsp.cpp
+0
-2
src/Rtsp/Rtsp.h
+0
-1
src/Rtsp/RtspMediaSource.h
+7
-7
src/Rtsp/RtspPlayer.cpp
+18
-9
src/Rtsp/RtspPlayer.h
+4
-3
src/Rtsp/RtspSession.cpp
+10
-10
src/Rtsp/RtspSession.h
+2
-2
没有找到文件。
src/Player/PlayerBase.h
查看文件 @
2edc4b1b
...
@@ -81,7 +81,8 @@ public:
...
@@ -81,7 +81,8 @@ public:
virtual
int
getAudioSampleRate
()
const
{
return
0
;
};
virtual
int
getAudioSampleRate
()
const
{
return
0
;
};
virtual
int
getAudioSampleBit
()
const
{
return
0
;
};
virtual
int
getAudioSampleBit
()
const
{
return
0
;
};
virtual
int
getAudioChannel
()
const
{
return
0
;
};
virtual
int
getAudioChannel
()
const
{
return
0
;
};
virtual
float
getRtpLossRate
(
int
iTrackId
)
const
{
return
0
;
};
//TrackVideo = 0, TrackAudio = 1
virtual
float
getRtpLossRate
(
int
trackType
)
const
{
return
0
;
};
virtual
const
string
&
getPps
()
const
{
static
string
null
;
return
null
;
};
virtual
const
string
&
getPps
()
const
{
static
string
null
;
return
null
;
};
virtual
const
string
&
getSps
()
const
{
static
string
null
;
return
null
;
};
virtual
const
string
&
getSps
()
const
{
static
string
null
;
return
null
;
};
virtual
const
string
&
getAudioCfg
()
const
{
static
string
null
;
return
null
;
};
virtual
const
string
&
getAudioCfg
()
const
{
static
string
null
;
return
null
;
};
...
...
This diff is collapsed.
Click to expand it.
src/RTP/RtpMaker.h
查看文件 @
2edc4b1b
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#define RTP_RTPMAKER_H_
#define RTP_RTPMAKER_H_
#include "Rtsp/RtspMediaSource.h"
#include "Rtsp/RtspMediaSource.h"
#include "Rtsp/Rtsp.h"
#include "Util/logger.h"
#include "Util/logger.h"
#include "Util/RingBuffer.h"
#include "Util/RingBuffer.h"
#include "Util/TimeTicker.h"
#include "Util/TimeTicker.h"
...
...
This diff is collapsed.
Click to expand it.
src/RTP/RtpMakerAAC.h
查看文件 @
2edc4b1b
...
@@ -45,7 +45,7 @@ public:
...
@@ -45,7 +45,7 @@ public:
typedef
std
::
shared_ptr
<
RtpMaker_AAC
>
Ptr
;
typedef
std
::
shared_ptr
<
RtpMaker_AAC
>
Ptr
;
RtpMaker_AAC
(
const
onGetRTP
&
cb
,
RtpMaker_AAC
(
const
onGetRTP
&
cb
,
uint32_t
ui32Ssrc
,
int
iMtuSize
,
int
iSampleRate
,
uint8_t
ui8PlayloadType
=
97
,
uint32_t
ui32Ssrc
,
int
iMtuSize
,
int
iSampleRate
,
uint8_t
ui8PlayloadType
=
97
,
uint8_t
ui8Interleaved
=
2
)
:
uint8_t
ui8Interleaved
=
TrackAudio
*
2
)
:
RtpMaker
(
cb
,
ui32Ssrc
,
iMtuSize
,
iSampleRate
,
ui8PlayloadType
,
ui8Interleaved
)
{
RtpMaker
(
cb
,
ui32Ssrc
,
iMtuSize
,
iSampleRate
,
ui8PlayloadType
,
ui8Interleaved
)
{
}
}
virtual
~
RtpMaker_AAC
()
{
virtual
~
RtpMaker_AAC
()
{
...
...
This diff is collapsed.
Click to expand it.
src/RTP/RtpMakerH264.h
查看文件 @
2edc4b1b
...
@@ -44,7 +44,7 @@ class RtpMaker_H264: public RtpMaker {
...
@@ -44,7 +44,7 @@ class RtpMaker_H264: public RtpMaker {
public
:
public
:
typedef
std
::
shared_ptr
<
RtpMaker_H264
>
Ptr
;
typedef
std
::
shared_ptr
<
RtpMaker_H264
>
Ptr
;
RtpMaker_H264
(
const
onGetRTP
&
cb
,
uint32_t
ui32Ssrc
,
int
iMtuSize
=
1400
,
int
iSampleRate
=
90000
,
RtpMaker_H264
(
const
onGetRTP
&
cb
,
uint32_t
ui32Ssrc
,
int
iMtuSize
=
1400
,
int
iSampleRate
=
90000
,
uint8_t
ui8PlayloadType
=
96
,
uint8_t
ui8Interleaved
=
0
)
:
uint8_t
ui8PlayloadType
=
96
,
uint8_t
ui8Interleaved
=
TrackVideo
*
2
)
:
RtpMaker
(
cb
,
ui32Ssrc
,
iMtuSize
,
iSampleRate
,
ui8PlayloadType
,
ui8Interleaved
)
{
RtpMaker
(
cb
,
ui32Ssrc
,
iMtuSize
,
iSampleRate
,
ui8PlayloadType
,
ui8Interleaved
)
{
}
}
virtual
~
RtpMaker_H264
()
{
virtual
~
RtpMaker_H264
()
{
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/Rtsp.cpp
查看文件 @
2edc4b1b
...
@@ -67,11 +67,9 @@ int parserSDP(const string& sdp, RtspTrack Track[2]) {
...
@@ -67,11 +67,9 @@ int parserSDP(const string& sdp, RtspTrack Track[2]) {
if
(
sdp_mid
.
find
(
"m=video"
)
!=
string
::
npos
)
{
if
(
sdp_mid
.
find
(
"m=video"
)
!=
string
::
npos
)
{
//视频通道
//视频通道
Track
[
track_cnt
].
type
=
TrackVideo
;
Track
[
track_cnt
].
type
=
TrackVideo
;
Track
[
track_cnt
].
trackId
=
0
;
}
else
if
(
sdp_mid
.
find
(
"m=audio"
)
!=
string
::
npos
)
{
}
else
if
(
sdp_mid
.
find
(
"m=audio"
)
!=
string
::
npos
)
{
//音频通道
//音频通道
Track
[
track_cnt
].
type
=
TrackAudio
;
Track
[
track_cnt
].
type
=
TrackAudio
;
Track
[
track_cnt
].
trackId
=
1
;
}
else
{
}
else
{
//不识别的track
//不识别的track
return
track_cnt
;
return
track_cnt
;
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/Rtsp.h
查看文件 @
2edc4b1b
...
@@ -43,7 +43,6 @@ typedef enum {
...
@@ -43,7 +43,6 @@ typedef enum {
class
RtspTrack
{
class
RtspTrack
{
public
:
public
:
uint8_t
PT
;
uint8_t
PT
;
uint8_t
trackId
;
uint8_t
interleaved
;
uint8_t
interleaved
;
TrackType
type
=
(
TrackType
)
-
1
;
TrackType
type
=
(
TrackType
)
-
1
;
string
trackSdp
;
string
trackSdp
;
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/RtspMediaSource.h
查看文件 @
2edc4b1b
...
@@ -74,14 +74,14 @@ public:
...
@@ -74,14 +74,14 @@ public:
return
m_strSdp
;
return
m_strSdp
;
}
}
virtual
uint32_t
getSsrc
(
int
trackId
)
{
virtual
uint32_t
getSsrc
(
TrackType
trackType
)
{
return
m_mapTracks
[
track
Id
].
ssrc
;
return
m_mapTracks
[
track
Type
].
ssrc
;
}
}
virtual
uint16_t
getSeqence
(
int
trackId
)
{
virtual
uint16_t
getSeqence
(
TrackType
trackType
)
{
return
m_mapTracks
[
track
Id
].
seq
;
return
m_mapTracks
[
track
Type
].
seq
;
}
}
virtual
uint32_t
getTimestamp
(
int
trackId
)
{
virtual
uint32_t
getTimestamp
(
TrackType
trackType
)
{
return
m_mapTracks
[
track
Id
].
timeStamp
;
return
m_mapTracks
[
track
Type
].
timeStamp
;
}
}
virtual
void
onGetSDP
(
const
string
&
sdp
)
{
virtual
void
onGetSDP
(
const
string
&
sdp
)
{
...
@@ -89,7 +89,7 @@ public:
...
@@ -89,7 +89,7 @@ public:
m_strSdp
=
sdp
;
m_strSdp
=
sdp
;
}
}
virtual
void
onGetRTP
(
const
RtpPacket
::
Ptr
&
rtppt
,
bool
keyPos
)
{
virtual
void
onGetRTP
(
const
RtpPacket
::
Ptr
&
rtppt
,
bool
keyPos
)
{
auto
&
trackRef
=
m_mapTracks
[
rtppt
->
interleaved
/
2
];
auto
&
trackRef
=
m_mapTracks
[
rtppt
->
type
];
trackRef
.
seq
=
rtppt
->
sequence
;
trackRef
.
seq
=
rtppt
->
sequence
;
trackRef
.
timeStamp
=
rtppt
->
timeStamp
;
trackRef
.
timeStamp
=
rtppt
->
timeStamp
;
trackRef
.
ssrc
=
rtppt
->
ssrc
;
trackRef
.
ssrc
=
rtppt
->
ssrc
;
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/RtspPlayer.cpp
查看文件 @
2edc4b1b
...
@@ -297,7 +297,7 @@ bool RtspPlayer::sendSetup(unsigned int trackIndex) {
...
@@ -297,7 +297,7 @@ bool RtspPlayer::sendSetup(unsigned int trackIndex) {
switch
(
m_eType
)
{
switch
(
m_eType
)
{
case
RTP_TCP
:
{
case
RTP_TCP
:
{
StrCaseMap
header
;
StrCaseMap
header
;
header
[
"Transport"
]
=
StrPrinter
<<
"RTP/AVP/TCP;unicast;interleaved="
<<
track
.
t
rackId
*
2
<<
"-"
<<
track
.
trackId
*
2
+
1
;
header
[
"Transport"
]
=
StrPrinter
<<
"RTP/AVP/TCP;unicast;interleaved="
<<
track
.
t
ype
*
2
<<
"-"
<<
track
.
type
*
2
+
1
;
return
sendRtspRequest
(
"SETUP"
,
baseUrl
,
header
);
return
sendRtspRequest
(
"SETUP"
,
baseUrl
,
header
);
}
}
break
;
break
;
...
@@ -485,7 +485,7 @@ void RtspPlayer::handleResPAUSE(const Parser& parser, bool bPause) {
...
@@ -485,7 +485,7 @@ void RtspPlayer::handleResPAUSE(const Parser& parser, bool bPause) {
strTrack
.
append
(
";"
);
strTrack
.
append
(
";"
);
auto
strControlSuffix
=
strTrack
.
substr
(
1
+
strTrack
.
rfind
(
'/'
),
strTrack
.
find
(
';'
)
-
strTrack
.
rfind
(
'/'
)
-
1
);
auto
strControlSuffix
=
strTrack
.
substr
(
1
+
strTrack
.
rfind
(
'/'
),
strTrack
.
find
(
';'
)
-
strTrack
.
rfind
(
'/'
)
-
1
);
auto
strRtpTime
=
FindField
(
strTrack
.
data
(),
"rtptime="
,
";"
);
auto
strRtpTime
=
FindField
(
strTrack
.
data
(),
"rtptime="
,
";"
);
auto
iIdx
=
getTrackIndex
(
strControlSuffix
);
auto
iIdx
=
getTrackIndex
ByControlSuffix
(
strControlSuffix
);
m_adFistStamp
[
iIdx
]
=
atoll
(
strRtpTime
.
data
());
m_adFistStamp
[
iIdx
]
=
atoll
(
strRtpTime
.
data
());
m_adNowStamp
[
iIdx
]
=
m_adFistStamp
[
iIdx
];
m_adNowStamp
[
iIdx
]
=
m_adFistStamp
[
iIdx
];
DebugL
<<
"rtptime:"
<<
strControlSuffix
<<
" "
<<
strRtpTime
;
DebugL
<<
"rtptime:"
<<
strControlSuffix
<<
" "
<<
strRtpTime
;
...
@@ -552,7 +552,7 @@ void RtspPlayer::splitRtp(unsigned char* pucRtp, unsigned int uiLen) {
...
@@ -552,7 +552,7 @@ void RtspPlayer::splitRtp(unsigned char* pucRtp, unsigned int uiLen) {
}
}
int
trackIdx
=
-
1
;
int
trackIdx
=
-
1
;
if
(
interleaved
%
2
==
0
){
if
(
interleaved
%
2
==
0
){
trackIdx
=
getTrackIndex
(
interleaved
/
2
);
trackIdx
=
getTrackIndex
ByInterleaved
(
interleaved
);
}
}
if
(
trackIdx
!=
-
1
)
{
if
(
trackIdx
!=
-
1
)
{
handleOneRtp
(
trackIdx
,
rtp_ptr
+
4
,
length
);
handleOneRtp
(
trackIdx
,
rtp_ptr
+
4
,
length
);
...
@@ -582,7 +582,7 @@ bool RtspPlayer::handleOneRtp(int iTrackidx, unsigned char *pucData, unsigned in
...
@@ -582,7 +582,7 @@ bool RtspPlayer::handleOneRtp(int iTrackidx, unsigned char *pucData, unsigned in
auto
&
track
=
m_aTrackInfo
[
iTrackidx
];
auto
&
track
=
m_aTrackInfo
[
iTrackidx
];
auto
pt_ptr
=
m_pktPool
.
obtain
();
auto
pt_ptr
=
m_pktPool
.
obtain
();
auto
&
rtppt
=*
pt_ptr
;
auto
&
rtppt
=*
pt_ptr
;
rtppt
.
interleaved
=
track
.
trackId
*
2
;
rtppt
.
interleaved
=
track
.
interleaved
;
rtppt
.
length
=
uiLen
+
4
;
rtppt
.
length
=
uiLen
+
4
;
rtppt
.
mark
=
pucData
[
1
]
>>
7
;
rtppt
.
mark
=
pucData
[
1
]
>>
7
;
...
@@ -667,8 +667,8 @@ void RtspPlayer::onRecvRTP_l(const RtpPacket::Ptr &rtppt, int trackidx){
...
@@ -667,8 +667,8 @@ void RtspPlayer::onRecvRTP_l(const RtpPacket::Ptr &rtppt, int trackidx){
onRecvRTP_l
(
rtppt
,
m_aTrackInfo
[
trackidx
]);
onRecvRTP_l
(
rtppt
,
m_aTrackInfo
[
trackidx
]);
}
}
float
RtspPlayer
::
getRtpLossRate
(
int
iTrack
Id
)
const
{
float
RtspPlayer
::
getRtpLossRate
(
int
iTrack
Type
)
const
{
int
iTrackIdx
=
getTrackIndex
(
iTrackId
);
int
iTrackIdx
=
getTrackIndex
ByTrackType
((
TrackType
)
iTrackType
);
if
(
iTrackIdx
==
-
1
){
if
(
iTrackIdx
==
-
1
){
uint64_t
totalRecv
=
0
;
uint64_t
totalRecv
=
0
;
uint64_t
totalSend
=
0
;
uint64_t
totalSend
=
0
;
...
@@ -788,7 +788,7 @@ void RtspPlayer::onPlayResult_l(const SockException &ex) {
...
@@ -788,7 +788,7 @@ void RtspPlayer::onPlayResult_l(const SockException &ex) {
onPlayResult
(
ex
);
onPlayResult
(
ex
);
}
}
int
RtspPlayer
::
getTrackIndex
(
const
string
&
controlSuffix
)
const
{
int
RtspPlayer
::
getTrackIndex
ByControlSuffix
(
const
string
&
controlSuffix
)
const
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
if
(
m_aTrackInfo
[
i
].
controlSuffix
==
controlSuffix
)
{
if
(
m_aTrackInfo
[
i
].
controlSuffix
==
controlSuffix
)
{
return
i
;
return
i
;
...
@@ -796,9 +796,18 @@ int RtspPlayer::getTrackIndex(const string &controlSuffix) const{
...
@@ -796,9 +796,18 @@ int RtspPlayer::getTrackIndex(const string &controlSuffix) const{
}
}
return
-
1
;
return
-
1
;
}
}
int
RtspPlayer
::
getTrackIndex
(
int
iTrackI
d
)
const
{
int
RtspPlayer
::
getTrackIndex
ByInterleaved
(
int
interleave
d
)
const
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
if
(
m_aTrackInfo
[
i
].
trackId
==
iTrackId
)
{
if
(
m_aTrackInfo
[
i
].
interleaved
==
interleaved
)
{
return
i
;
}
}
return
-
1
;
}
int
RtspPlayer
::
getTrackIndexByTrackType
(
TrackType
trackType
)
const
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
if
(
m_aTrackInfo
[
i
].
type
==
trackType
)
{
return
i
;
return
i
;
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/RtspPlayer.h
查看文件 @
2edc4b1b
...
@@ -60,7 +60,7 @@ public:
...
@@ -60,7 +60,7 @@ public:
void
play
(
const
char
*
strUrl
)
override
;
void
play
(
const
char
*
strUrl
)
override
;
void
pause
(
bool
bPause
)
override
;
void
pause
(
bool
bPause
)
override
;
void
teardown
()
override
;
void
teardown
()
override
;
float
getRtpLossRate
(
int
iTrack
Id
)
const
override
;
float
getRtpLossRate
(
int
iTrack
Type
)
const
override
;
protected
:
protected
:
//派生类回调函数
//派生类回调函数
virtual
bool
onCheckSDP
(
const
string
&
strSdp
,
const
RtspTrack
*
pTrack
,
int
iTrackCnt
)
=
0
;
virtual
bool
onCheckSDP
(
const
string
&
strSdp
,
const
RtspTrack
*
pTrack
,
int
iTrackCnt
)
=
0
;
...
@@ -73,8 +73,9 @@ private:
...
@@ -73,8 +73,9 @@ private:
void
onRecvRTP_l
(
const
RtpPacket
::
Ptr
&
pRtppt
,
const
RtspTrack
&
track
);
void
onRecvRTP_l
(
const
RtpPacket
::
Ptr
&
pRtppt
,
const
RtspTrack
&
track
);
void
onPlayResult_l
(
const
SockException
&
ex
);
void
onPlayResult_l
(
const
SockException
&
ex
);
int
getTrackIndex
(
const
string
&
controlSuffix
)
const
;
int
getTrackIndexByControlSuffix
(
const
string
&
controlSuffix
)
const
;
int
getTrackIndex
(
int
iTrackId
)
const
;
int
getTrackIndexByInterleaved
(
int
interleaved
)
const
;
int
getTrackIndexByTrackType
(
TrackType
trackId
)
const
;
void
play
(
const
char
*
strUrl
,
const
char
*
strUser
,
const
char
*
strPwd
,
eRtpType
eType
);
void
play
(
const
char
*
strUrl
,
const
char
*
strUser
,
const
char
*
strPwd
,
eRtpType
eType
);
void
onConnect
(
const
SockException
&
err
)
override
;
void
onConnect
(
const
SockException
&
err
)
override
;
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/RtspSession.cpp
查看文件 @
2edc4b1b
...
@@ -538,8 +538,8 @@ bool RtspSession::handleReq_Setup() {
...
@@ -538,8 +538,8 @@ bool RtspSession::handleReq_Setup() {
"x-Dynamic-Rate: 1
\r\n\r\n
"
,
"x-Dynamic-Rate: 1
\r\n\r\n
"
,
m_iCseq
,
SERVER_NAME
,
m_iCseq
,
SERVER_NAME
,
RTSP_VERSION
,
RTSP_BUILDTIME
,
RTSP_VERSION
,
RTSP_BUILDTIME
,
dateHeader
().
data
(),
trackRef
.
t
rackId
*
2
,
dateHeader
().
data
(),
trackRef
.
t
ype
*
2
,
trackRef
.
t
rackId
*
2
+
1
,
trackRef
.
t
ype
*
2
+
1
,
printSSRC
(
trackRef
.
ssrc
).
data
(),
printSSRC
(
trackRef
.
ssrc
).
data
(),
m_strSession
.
data
());
m_strSession
.
data
());
send
(
m_pcBuf
,
iLen
);
send
(
m_pcBuf
,
iLen
);
...
@@ -606,7 +606,7 @@ bool RtspSession::handleReq_Setup() {
...
@@ -606,7 +606,7 @@ bool RtspSession::handleReq_Setup() {
strongSelf
->
safeShutdown
();
strongSelf
->
safeShutdown
();
});
});
}
}
int
iSrvPort
=
m_pBrdcaster
->
getPort
(
trackRef
.
t
rackId
);
int
iSrvPort
=
m_pBrdcaster
->
getPort
(
trackRef
.
t
ype
);
//我们用trackIdx区分rtp和rtcp包
//我们用trackIdx区分rtp和rtcp包
auto
pSockRtcp
=
UDPServer
::
Instance
().
getSock
(
get_local_ip
().
data
(),
2
*
trackIdx
+
1
,
iSrvPort
+
1
);
auto
pSockRtcp
=
UDPServer
::
Instance
().
getSock
(
get_local_ip
().
data
(),
2
*
trackIdx
+
1
,
iSrvPort
+
1
);
if
(
!
pSockRtcp
)
{
if
(
!
pSockRtcp
)
{
...
@@ -709,9 +709,9 @@ bool RtspSession::handleReq_Play() {
...
@@ -709,9 +709,9 @@ bool RtspSession::handleReq_Play() {
}
}
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
auto
&
track
=
m_aTrackInfo
[
i
];
auto
&
track
=
m_aTrackInfo
[
i
];
track
.
ssrc
=
pMediaSrc
->
getSsrc
(
track
.
t
rackId
);
track
.
ssrc
=
pMediaSrc
->
getSsrc
(
track
.
t
ype
);
track
.
seq
=
pMediaSrc
->
getSeqence
(
track
.
t
rackId
);
track
.
seq
=
pMediaSrc
->
getSeqence
(
track
.
t
ype
);
track
.
timeStamp
=
pMediaSrc
->
getTimestamp
(
track
.
t
rackId
);
track
.
timeStamp
=
pMediaSrc
->
getTimestamp
(
track
.
t
ype
);
}
}
}
}
m_bFirstPlay
=
false
;
m_bFirstPlay
=
false
;
...
@@ -873,9 +873,9 @@ inline bool RtspSession::findStream() {
...
@@ -873,9 +873,9 @@ inline bool RtspSession::findStream() {
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
auto
&
track
=
m_aTrackInfo
[
i
];
auto
&
track
=
m_aTrackInfo
[
i
];
track
.
ssrc
=
pMediaSrc
->
getSsrc
(
track
.
t
rackId
);
track
.
ssrc
=
pMediaSrc
->
getSsrc
(
track
.
t
ype
);
track
.
seq
=
pMediaSrc
->
getSeqence
(
track
.
t
rackId
);
track
.
seq
=
pMediaSrc
->
getSeqence
(
track
.
t
ype
);
track
.
timeStamp
=
pMediaSrc
->
getTimestamp
(
track
.
t
rackId
);
track
.
timeStamp
=
pMediaSrc
->
getTimestamp
(
track
.
t
ype
);
}
}
return
true
;
return
true
;
...
@@ -904,7 +904,7 @@ inline void RtspSession::sendRtpPacket(const RtpPacket::Ptr & pkt) {
...
@@ -904,7 +904,7 @@ inline void RtspSession::sendRtpPacket(const RtpPacket::Ptr & pkt) {
}
}
break
;
break
;
case
PlayerBase
:
:
RTP_UDP
:
{
case
PlayerBase
:
:
RTP_UDP
:
{
int
iTrackIndex
=
getTrackIndexByTrack
Id
(
pkt
->
interleaved
/
2
);
int
iTrackIndex
=
getTrackIndexByTrack
Type
(
pkt
->
type
);
auto
pSock
=
m_apUdpSock
[
iTrackIndex
].
lock
();
auto
pSock
=
m_apUdpSock
[
iTrackIndex
].
lock
();
if
(
!
pSock
)
{
if
(
!
pSock
)
{
shutdown
();
shutdown
();
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/RtspSession.h
查看文件 @
2edc4b1b
...
@@ -126,9 +126,9 @@ private:
...
@@ -126,9 +126,9 @@ private:
}
}
return
tmp
;
return
tmp
;
}
}
inline
int
getTrackIndexByTrack
Id
(
int
iTrackId
)
{
inline
int
getTrackIndexByTrack
Type
(
TrackType
type
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
m_uiTrackCnt
;
i
++
)
{
if
(
iTrackId
==
m_aTrackInfo
[
i
].
trackId
)
{
if
(
type
==
m_aTrackInfo
[
i
].
type
)
{
return
i
;
return
i
;
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论