diff --git a/src/Rtmp/RtmpProtocol.cpp b/src/Rtmp/RtmpProtocol.cpp index daf43564..672f506f 100644 --- a/src/Rtmp/RtmpProtocol.cpp +++ b/src/Rtmp/RtmpProtocol.cpp @@ -910,10 +910,7 @@ void RtmpProtocol::handle_chunk(RtmpPacket::Ptr packet) { ts |= (*ptr << 24); ptr += 1; ptr += 3; - // 参考FFmpeg多拷贝了4个字节 [AUTO-TRANSLATED:d8aae4ae] - // Reference FFmpeg copied 4 more bytes - size += 4; - if (ptr + size > ptr_tail) { + if (ptr + size + 4 > ptr_tail) { break; } if (!first_message) { @@ -930,7 +927,7 @@ void RtmpProtocol::handle_chunk(RtmpPacket::Ptr packet) { sub_packet.stream_index = chunk_data.stream_index; sub_packet.chunk_id = chunk_data.chunk_id; handle_chunk(std::move(sub_packet_ptr)); - ptr += size; + ptr += size + 4; } break; } diff --git a/src/Rtmp/RtmpSession.cpp b/src/Rtmp/RtmpSession.cpp index 89e36f87..67219aa0 100644 --- a/src/Rtmp/RtmpSession.cpp +++ b/src/Rtmp/RtmpSession.cpp @@ -273,17 +273,7 @@ void RtmpSession::sendPlayResponse(const string &err, const RtmpMediaSource::Ptr "details", _media_info.stream, "clientid", "0"}); - // |RtmpSampleAccess(true, true) AMFEncoder invoke; - invoke << "|RtmpSampleAccess" << true << true; - sendResponse(MSG_DATA, invoke.data()); - - //onStatus(NetStream.Data.Start) - invoke.clear(); - AMFValue obj(AMF_OBJECT); - obj.set("code", "NetStream.Data.Start"); - invoke << "onStatus" << obj; - sendResponse(MSG_DATA, invoke.data()); //onStatus(NetStream.Play.PublishNotify) sendStatus({ "level", "status", @@ -587,7 +577,17 @@ void RtmpSession::onCmd_seek(AMFDecoder &dec) { } void RtmpSession::onSendMedia(const RtmpPacket::Ptr &pkt) { - sendRtmp(pkt->type_id, pkt->stream_index, pkt, pkt->time_stamp, pkt->chunk_id); + switch (pkt->type_id) { + case MSG_AUDIO: + sendRtmp(pkt->type_id, STREAM_MEDIA, pkt, pkt->time_stamp, CHUNK_AUDIO); + break; + case MSG_VIDEO: + sendRtmp(pkt->type_id, STREAM_MEDIA, pkt, pkt->time_stamp, CHUNK_VIDEO); + break; + default: + sendRtmp(pkt->type_id, pkt->stream_index, pkt, pkt->time_stamp, pkt->chunk_id); + break; + } } bool RtmpSession::close(MediaSource &sender) {