mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-14 03:55:58 +08:00
优化rtmp时间戳修正
This commit is contained in:
@@ -29,15 +29,21 @@
|
||||
namespace mediakit {
|
||||
|
||||
void Stamp::revise(uint32_t dts, uint32_t pts, int64_t &dts_out, int64_t &pts_out) {
|
||||
if(!pts){
|
||||
//没有播放时间戳,使其赋值为解码时间戳
|
||||
pts = dts;
|
||||
}
|
||||
//pts和dts的差值
|
||||
int pts_dts_diff = pts - dts;
|
||||
|
||||
if(_first){
|
||||
//记录第一次时间戳,后面好计算时间戳增量
|
||||
_start_dts = dts;
|
||||
_first = false;
|
||||
_ticker = std::make_shared<SmoothTicker>();
|
||||
}
|
||||
//pts和dts的差值
|
||||
int pts_dts_diff = pts - dts;
|
||||
if(_modifyStamp){
|
||||
if (!dts) {
|
||||
//没有解码时间戳,我们生成解码时间戳
|
||||
dts = _ticker->elapsedTime();
|
||||
}
|
||||
|
||||
@@ -60,11 +66,6 @@ void Stamp::revise(uint32_t dts, uint32_t pts, int64_t &dts_out, int64_t &pts_ou
|
||||
_dts_inc = dts_out;
|
||||
|
||||
//////////////以下是播放时间戳的计算//////////////////
|
||||
if(!pts){
|
||||
//没有播放时间戳
|
||||
pts = dts;
|
||||
}
|
||||
|
||||
if(pts_dts_diff > 200 || pts_dts_diff < -200){
|
||||
//如果差值大于200毫秒,则认为由于回环导致时间戳错乱了
|
||||
pts_dts_diff = 0;
|
||||
|
||||
Reference in New Issue
Block a user