mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2025-02-17 13:29:56 +08:00
修复bug
This commit is contained in:
parent
f3f7a96281
commit
4858dc74ef
@ -156,7 +156,7 @@ public:
|
||||
if(_sps.empty() || _pps.empty()){
|
||||
return TrackInvalid;
|
||||
}
|
||||
return TrackAudio;
|
||||
return TrackVideo;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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对象
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user