rtsp推流采用相对时间戳,防止音视频不同步:#392
This commit is contained in:
parent
c31b0cc26b
commit
7254c39fc2
|
|
@ -913,7 +913,13 @@ inline void RtspSession::send_NotAcceptable() {
|
||||||
sendRtspResponse("406 Not Acceptable",{"Connection","Close"});
|
sendRtspResponse("406 Not Acceptable",{"Connection","Close"});
|
||||||
}
|
}
|
||||||
|
|
||||||
void RtspSession::onRtpSorted(const RtpPacket::Ptr &rtp, int) {
|
void RtspSession::onRtpSorted(const RtpPacket::Ptr &rtp, int track_idx) {
|
||||||
|
if (_start_stamp[track_idx] == -1) {
|
||||||
|
//记录起始时间戳
|
||||||
|
_start_stamp[track_idx] = rtp->timeStamp;
|
||||||
|
}
|
||||||
|
//时间戳增量
|
||||||
|
rtp->timeStamp -= _start_stamp[track_idx];
|
||||||
_push_src->onWrite(rtp, false);
|
_push_src->onWrite(rtp, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -937,8 +943,7 @@ inline void RtspSession::onRcvPeerUdpData(int interleaved, const Buffer::Ptr &bu
|
||||||
_udp_connected_flags.emplace(interleaved);
|
_udp_connected_flags.emplace(interleaved);
|
||||||
_rtcp_socks[(interleaved - 1) / 2]->setSendPeerAddr(&addr);
|
_rtcp_socks[(interleaved - 1) / 2]->setSendPeerAddr(&addr);
|
||||||
}
|
}
|
||||||
onRtcpPacket((interleaved - 1) / 2, _sdp_track[(interleaved - 1) / 2], (unsigned char *) buf->data(),
|
onRtcpPacket((interleaved - 1) / 2, _sdp_track[(interleaved - 1) / 2], (unsigned char *) buf->data(), buf->size());
|
||||||
buf->size());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,8 @@ private:
|
||||||
Rtsp::eRtpType _rtp_type = Rtsp::RTP_Invalid;
|
Rtsp::eRtpType _rtp_type = Rtsp::RTP_Invalid;
|
||||||
//收到的seq,回复时一致
|
//收到的seq,回复时一致
|
||||||
int _cseq = 0;
|
int _cseq = 0;
|
||||||
|
//rtsp推流起始时间戳,目的是为了同步
|
||||||
|
int64_t _start_stamp[2] = {-1, -1};
|
||||||
//消耗的总流量
|
//消耗的总流量
|
||||||
uint64_t _bytes_usage = 0;
|
uint64_t _bytes_usage = 0;
|
||||||
//ContentBase
|
//ContentBase
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue