mirror of
https://gitee.com/xia-chu/ZLMediaKit.git
synced 2026-05-06 10:57:50 +08:00
Fix g711 rtp encoder timestamp calculate bug (#4085)
This commit is contained in:
parent
3f5923337e
commit
cb4db80502
@ -26,20 +26,20 @@ void G711RtpEncoder::setOpt(int opt, const toolkit::Any ¶m) {
|
||||
bool G711RtpEncoder::inputFrame(const Frame::Ptr &frame) {
|
||||
auto ptr = frame->data() + frame->prefixSize();
|
||||
auto size = frame->size() - frame->prefixSize();
|
||||
|
||||
uint64_t in_pts;
|
||||
if (!_pkt_bytes) {
|
||||
_in_pts = frame->pts();
|
||||
in_pts = frame->pts();
|
||||
// G711压缩率固定是2倍
|
||||
_pkt_bytes = _pkt_dur_ms * _channels * (_sample_bit / 8) * _sample_rate / 1000 / 2;
|
||||
} else {
|
||||
_in_pts = frame->pts() - (float)_buffer.size() / (float)_pkt_bytes * _pkt_dur_ms;
|
||||
in_pts = frame->pts() - _buffer.size() * _pkt_dur_ms / _pkt_bytes;
|
||||
}
|
||||
|
||||
_buffer.append(ptr, size);
|
||||
|
||||
while (_buffer.size() >= _pkt_bytes) {
|
||||
_in_pts += _pkt_dur_ms;
|
||||
RtpCodec::inputRtp(getRtpInfo().makeRtp(TrackAudio, _buffer.data(), _pkt_bytes, false, _in_pts), false);
|
||||
RtpCodec::inputRtp(getRtpInfo().makeRtp(TrackAudio, _buffer.data(), _pkt_bytes, false, in_pts), false);
|
||||
in_pts += _pkt_dur_ms;
|
||||
_buffer.erase(0, _pkt_bytes);
|
||||
}
|
||||
return true;
|
||||
|
||||
@ -59,7 +59,6 @@ private:
|
||||
|
||||
uint32_t _pkt_dur_ms = 20;
|
||||
uint32_t _pkt_bytes = 0;
|
||||
int64_t _in_pts = 0;
|
||||
toolkit::BufferLikeString _buffer;
|
||||
};
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user