修复bug

This commit is contained in:
xiongziliang 2018-10-24 10:03:51 +08:00
parent f3f7a96281
commit 4858dc74ef
4 changed files with 29 additions and 28 deletions

View File

@ -156,7 +156,7 @@ public:
if(_sps.empty() || _pps.empty()){
return TrackInvalid;
}
return TrackAudio;
return TrackVideo;
}

View File

@ -73,28 +73,21 @@ RtpParser::RtpParser(const string& sdp) {
bool RtpParser::inputRtp(const RtpPacket::Ptr & rtp) {
switch (rtp->getTrackType()) {
case TrackVideo:
return inputVideo(rtp);
case TrackAudio:
return inputAudio(rtp);
case TrackVideo:{
if(_videoRtpDecoder){
return _videoRtpDecoder->inputRtp(rtp, true);
}
return false;
}
case TrackAudio:{
_audioRtpDecoder->inputRtp(rtp, false);
return false;
}
default:
return false;
}
}
inline bool RtpParser::inputVideo(const RtpPacket::Ptr &rtp) {
if(_videoRtpDecoder){
return _videoRtpDecoder->inputRtp(rtp, true);
}
return false;
}
inline bool RtpParser::inputAudio(const RtpPacket::Ptr &rtp) {
if(_audioRtpDecoder){
return _audioRtpDecoder->inputRtp(rtp, false);
}
return false;
}
inline void RtpParser::onGetAudioTrack(const RtspTrack& audio) {
//生成Track对象

View File

@ -54,17 +54,27 @@ public:
return m_fDuration;
}
/**
*
* rtsp的sdp不包含sps pps信息
* sps的rtp包后才能完成
* @return
*/
bool isInited() const override{
return true;
bool ret = true;
if(ret && _audioTrack){
ret = _audioTrack->getTrackType() != TrackInvalid;
}
if(ret && _videoTrack){
ret = _videoTrack->getTrackType() != TrackInvalid;
}
return ret;
}
vector<Track::Ptr> getTracks() const override;
private:
inline void onGetAudioTrack(const RtspTrack &audio);
inline void onGetVideoTrack(const RtspTrack &video);
//返回值true 代表是i帧第一个rtp包
inline bool inputVideo(const RtpPacket::Ptr &rtp);
inline bool inputAudio(const RtpPacket::Ptr &rtp);
private:
float m_fDuration = 0;
AudioTrack::Ptr _audioTrack;

View File

@ -166,13 +166,13 @@ public:
/**
*
* @param sps 264 sps,0x00000001
* @param pps 264 pps,0x00000001
* @param sps 264 sps,0x00000001
* @param pps 264 pps,0x00000001
* @param playload_type rtp playload type 96
* @param bitrate
*/
H264Sdp(const string &sps,
const string &pps,
H264Sdp(const string &strSPS,
const string &strPPS,
int playload_type = 96,
int bitrate = 4000) : Sdp(90000,playload_type) {
//视频通道
@ -183,8 +183,6 @@ public:
char strTemp[100];
int profile_level_id = 0;
string strSPS = sps.substr(4);
string strPPS = pps.substr(4);
if (strSPS.length() >= 4) { // sanity check
profile_level_id = (strSPS[1] << 16) | (strSPS[2] << 8) | strSPS[3]; // profile_idc|constraint_setN_flag|level_idc
}