mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-10-06 20:23:43 +08:00
完善Rtmp复用器
This commit is contained in:
parent
186f4e4683
commit
1e0db96457
|
@ -116,6 +116,7 @@ void H264RtmpEncoder::inputFrame(const Frame::Ptr &frame) {
|
|||
auto iLen = frame->size() - frame->prefixSize();
|
||||
auto type = ((uint8_t*)pcData)[0] & 0x1F;
|
||||
|
||||
if(!_gotSpsPps){
|
||||
//尝试从frame中获取sps pps
|
||||
switch (type){
|
||||
case 7:{
|
||||
|
@ -148,10 +149,15 @@ void H264RtmpEncoder::inputFrame(const Frame::Ptr &frame) {
|
|||
_pps = _track->getPps();
|
||||
makeVideoConfigPkt();
|
||||
}
|
||||
}
|
||||
|
||||
switch (type){
|
||||
case 1:
|
||||
case 5:{
|
||||
case 5:
|
||||
//在IDR帧之前插入config包
|
||||
if(_gotSpsPps){
|
||||
makeVideoConfigPkt();
|
||||
}
|
||||
case 1:{
|
||||
//I or P or B frame
|
||||
int8_t flags = 7; //h.264
|
||||
bool is_config = false;
|
||||
|
@ -184,6 +190,8 @@ void H264RtmpEncoder::inputFrame(const Frame::Ptr &frame) {
|
|||
|
||||
|
||||
void H264RtmpEncoder::makeVideoConfigPkt() {
|
||||
_gotSpsPps = true;
|
||||
|
||||
int8_t flags = 7; //h.264
|
||||
flags |= (FLV_KEY_FRAME << 4);
|
||||
bool is_config = true;
|
||||
|
|
|
@ -93,6 +93,7 @@ private:
|
|||
void makeVideoConfigPkt();
|
||||
private:
|
||||
H264Track::Ptr _track;
|
||||
bool _gotSpsPps = false;
|
||||
};
|
||||
|
||||
}//namespace mediakit
|
||||
|
|
Loading…
Reference in New Issue
Block a user