完善seek相关的逻辑

This commit is contained in:
xiongziliang
2018-10-26 15:09:08 +08:00
parent 52f0d89d7a
commit 6870292fd6
10 changed files with 39 additions and 33 deletions

View File

@@ -84,12 +84,18 @@ public:
}
return track->_seq;
}
virtual uint32_t getTimeStamp(TrackType trackType) {
uint32_t getTimeStamp(TrackType trackType) override {
auto track = _sdpAttr.getTrack(trackType);
if(!track){
return 0;
if(track) {
return track->_time_stamp;
}
auto tracks = _sdpAttr.getAvailableTrack();
switch (tracks.size()){
case 0: return 0;
case 1: return tracks[0]->_time_stamp;
default:return MAX(tracks[0]->_time_stamp,tracks[1]->_time_stamp);
}
return track->_time_stamp;
}
virtual void setTimeStamp(uint32_t uiStamp) {

View File

@@ -723,13 +723,13 @@ bool RtspSession::handleReq_Play() {
auto iStartTime = 1000 * atof(strStart.data());
InfoL << "rtsp seekTo(ms):" << iStartTime;
pMediaSrc->seekTo(iStartTime);
iStamp = pMediaSrc->getStamp();
iStamp = pMediaSrc->getTimeStamp(TrackInvalid);
}else if(pMediaSrc->getRing()->readerCount() == 1){
//第一个消费者
pMediaSrc->seekTo(0);
iStamp = 0;
}else{
iStamp = pMediaSrc->getStamp();
iStamp = pMediaSrc->getTimeStamp(TrackInvalid);
}
for(auto &track : _aTrackInfo){