合并代码

This commit is contained in:
monktan
2020-11-09 10:58:33 +08:00
7 changed files with 48 additions and 34 deletions

View File

@@ -200,7 +200,10 @@ void H264RtmpEncoder::inputFrame(const Frame::Ptr &frame) {
_lastPacket->buffer.clear();
_lastPacket->buffer.push_back(flags);
_lastPacket->buffer.push_back(!is_config);
auto cts = frame->pts() - frame->dts();
int32_t cts = frame->pts() - frame->dts();
if (cts < 0) {
cts = 0;
}
cts = htonl(cts);
_lastPacket->buffer.append((char *)&cts + 1, 3);

View File

@@ -247,6 +247,9 @@ private:
}
break;
}
if (_width == 0 && ready()) {
onReady();
}
}
/**

View File

@@ -24,7 +24,7 @@ int64_t RtpSplitter::onRecvHeader(const char *data,uint64_t len){
data += _offset;
len -= _offset;
if (_offset == kEHOME_OFFSET + 4 && len > 12 && data[12] == '\r') {
if (_is_ehome && len > 12 && data[12] == '\r') {
//这是ehome,移除第12个字节
memmove((char *) data + 1, data, 12);
data += 1;
@@ -55,6 +55,7 @@ const char *RtpSplitter::onSearchPacketTail(const char *data, uint64_t len) {
}
//忽略ehome私有头后是rtsp样式的rtp多4个字节
_offset = kEHOME_OFFSET + 4;
_is_ehome = true;
//忽略ehome私有头
return onSearchPacketTail_l(data + kEHOME_OFFSET + 2, len - kEHOME_OFFSET - 2);
}

View File

@@ -36,6 +36,7 @@ protected:
private:
int _offset = 0;
bool _is_ehome = false;
};
}//namespace mediakit

View File

@@ -223,6 +223,9 @@ void RtspPlayer::sendSetup(unsigned int track_idx) {
_on_response = std::bind(&RtspPlayer::handleResSETUP, this, placeholders::_1, track_idx);
auto &track = _sdp_track[track_idx];
auto baseUrl = _content_base + "/" + track->_control_surffix;
if (track->_control.find("://") != string::npos) {
baseUrl = track->_control;
}
switch (_rtp_type) {
case Rtsp::RTP_TCP: {
sendRtspRequest("SETUP",baseUrl,{"Transport",StrPrinter << "RTP/AVP/TCP;unicast;interleaved=" << track->_type * 2 << "-" << track->_type * 2 + 1});

View File

@@ -239,6 +239,9 @@ void RtspPusher::sendSetup(unsigned int track_idx) {
_on_res_func = std::bind(&RtspPusher::handleResSetup, this, placeholders::_1, track_idx);
auto &track = _track_vec[track_idx];
auto base_url = _content_base + "/" + track->_control_surffix;
if (track->_control.find("://") != string::npos) {
base_url = track->_control;
}
switch (_rtp_type) {
case Rtsp::RTP_TCP: {
sendRtspRequest("SETUP", base_url, {"Transport",