diff --git a/src/Rtmp/RtmpPlayer.cpp b/src/Rtmp/RtmpPlayer.cpp index 30c2ef5a..107988eb 100644 --- a/src/Rtmp/RtmpPlayer.cpp +++ b/src/Rtmp/RtmpPlayer.cpp @@ -354,7 +354,7 @@ void RtmpPlayer::onRtmpChunk(RtmpPacket::Ptr packet) { case MSG_CMD3: case MSG_DATA: case MSG_DATA3: { - AMFDecoder dec(chunk_data.buffer, 0); + AMFDecoder dec(chunk_data.buffer, 0, (chunk_data.type_id == MSG_DATA3 || chunk_data.type_id == MSG_CMD3) ? 3 : 0); std::string type = dec.load(); auto it = s_func_map.find(type); if (it != s_func_map.end()) { diff --git a/src/Rtmp/RtmpPusher.cpp b/src/Rtmp/RtmpPusher.cpp index bb0cf6fb..c8813367 100644 --- a/src/Rtmp/RtmpPusher.cpp +++ b/src/Rtmp/RtmpPusher.cpp @@ -292,7 +292,7 @@ void RtmpPusher::onRtmpChunk(RtmpPacket::Ptr packet) { g_mapCmd.emplace("onStatus", &RtmpPusher::onCmd_onStatus); }); - AMFDecoder dec(chunk_data.buffer, 0); + AMFDecoder dec(chunk_data.buffer, 0, chunk_data.type_id == MSG_CMD3 ? 3 : 0); std::string type = dec.load(); auto it = g_mapCmd.find(type); if (it != g_mapCmd.end()) { diff --git a/src/Rtmp/RtmpSession.cpp b/src/Rtmp/RtmpSession.cpp index 7187226d..7775c553 100644 --- a/src/Rtmp/RtmpSession.cpp +++ b/src/Rtmp/RtmpSession.cpp @@ -452,14 +452,14 @@ void RtmpSession::onRtmpChunk(RtmpPacket::Ptr packet) { switch (chunk_data.type_id) { case MSG_CMD: case MSG_CMD3: { - AMFDecoder dec(chunk_data.buffer, chunk_data.type_id == MSG_CMD3 ? 1 : 0); + AMFDecoder dec(chunk_data.buffer, chunk_data.type_id == MSG_CMD3 ? 3 : 0); onProcessCmd(dec); break; } case MSG_DATA: case MSG_DATA3: { - AMFDecoder dec(chunk_data.buffer, chunk_data.type_id == MSG_CMD3 ? 1 : 0); + AMFDecoder dec(chunk_data.buffer, chunk_data.type_id == MSG_DATA3 ? 3 : 0); std::string type = dec.load(); if (type == "@setDataFrame") { setMetaData(dec);