mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-01 23:57:37 +08:00
合并代码
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -247,6 +247,9 @@ private:
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (_width == 0 && ready()) {
|
||||
onReady();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ protected:
|
||||
|
||||
private:
|
||||
int _offset = 0;
|
||||
bool _is_ehome = false;
|
||||
};
|
||||
|
||||
}//namespace mediakit
|
||||
|
||||
@@ -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});
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user