修复过滤多余帧类型导致的bug
This commit is contained in:
parent
bd8a9a78e8
commit
6e59000265
|
|
@ -49,7 +49,6 @@ public:
|
||||||
NAL_SPS = 7,
|
NAL_SPS = 7,
|
||||||
NAL_PPS = 8,
|
NAL_PPS = 8,
|
||||||
NAL_IDR = 5,
|
NAL_IDR = 5,
|
||||||
NAL_B_P = 1
|
|
||||||
} NalType;
|
} NalType;
|
||||||
|
|
||||||
char *data() const override{
|
char *data() const override{
|
||||||
|
|
@ -315,18 +314,15 @@ private:
|
||||||
//I
|
//I
|
||||||
insertConfigFrame(frame);
|
insertConfigFrame(frame);
|
||||||
VideoTrack::inputFrame(frame);
|
VideoTrack::inputFrame(frame);
|
||||||
_last_frame_is_idr = true;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case H264Frame::NAL_B_P:{
|
default:
|
||||||
//B or P
|
|
||||||
VideoTrack::inputFrame(frame);
|
VideoTrack::inputFrame(frame);
|
||||||
_last_frame_is_idr = false;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_last_frame_is_idr = type == H264Frame::NAL_IDR;
|
||||||
if(_width == 0 && ready()){
|
if(_width == 0 && ready()){
|
||||||
onReady();
|
onReady();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -144,9 +144,6 @@ void H264RtmpEncoder::inputFrame(const Frame::Ptr &frame) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type){
|
|
||||||
case H264Frame::NAL_IDR:
|
|
||||||
case H264Frame::NAL_B_P:{
|
|
||||||
if(_lastPacket && _lastPacket->timeStamp != frame->stamp()) {
|
if(_lastPacket && _lastPacket->timeStamp != frame->stamp()) {
|
||||||
RtmpCodec::inputRtmp(_lastPacket, _lastPacket->isVideoKeyFrame());
|
RtmpCodec::inputRtmp(_lastPacket, _lastPacket->isVideoKeyFrame());
|
||||||
_lastPacket = nullptr;
|
_lastPacket = nullptr;
|
||||||
|
|
@ -177,12 +174,6 @@ void H264RtmpEncoder::inputFrame(const Frame::Ptr &frame) {
|
||||||
_lastPacket->strBuf.append(pcData, iLen);
|
_lastPacket->strBuf.append(pcData, iLen);
|
||||||
_lastPacket->bodySize = _lastPacket->strBuf.size();
|
_lastPacket->bodySize = _lastPacket->strBuf.size();
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void H264RtmpEncoder::makeVideoConfigPkt() {
|
void H264RtmpEncoder::makeVideoConfigPkt() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue