From 257d82bd8be734d475479ed62a482f6cf8e82769 Mon Sep 17 00:00:00 2001 From: q191201771 <191201771@qq.com> Date: Mon, 1 May 2023 08:57:41 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20rtmp2mpegts:=20=E7=A1=AE=E4=BF=9Dpts?= =?UTF-8?q?=E6=9C=89=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/remux/rtmp2mpegts.go | 2 ++ pkg/remux/rtmp2mpegts_filter__timestamp.go | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/remux/rtmp2mpegts.go b/pkg/remux/rtmp2mpegts.go index b5dbb47..f15afa6 100644 --- a/pkg/remux/rtmp2mpegts.go +++ b/pkg/remux/rtmp2mpegts.go @@ -146,6 +146,7 @@ func (s *Rtmp2MpegtsRemuxer) FlushAudio() { var frame mpegts.Frame frame.Cc = s.audioCc frame.Dts = s.audioCacheFirstFramePts + frame.Cts = 0 frame.Pts = s.audioCacheFirstFramePts frame.Key = false frame.Raw = s.audioCacheFrames @@ -374,6 +375,7 @@ func (s *Rtmp2MpegtsRemuxer) feedVideo(msg base.RtmpMsg) { frame.Cc = s.videoCc frame.Dts = dts frame.Cts = msg.Cts() + frame.Pts = frame.Dts + 90*uint64(frame.Cts) frame.Key = msg.IsVideoKeyNalu() frame.Raw = s.videoOut frame.Pid = mpegts.PidVideo diff --git a/pkg/remux/rtmp2mpegts_filter__timestamp.go b/pkg/remux/rtmp2mpegts_filter__timestamp.go index f424843..c47f003 100644 --- a/pkg/remux/rtmp2mpegts_filter__timestamp.go +++ b/pkg/remux/rtmp2mpegts_filter__timestamp.go @@ -45,9 +45,9 @@ func (f *Rtmp2MpegtsTimestampFilter) Do(frame *mpegts.Frame) { } if frame.Dts < f.basicAudioDts { Log.Warnf("[%s] audio dts invalid. dts=%d, base=%d, frame=%s", f.uk, frame.Dts, f.basicAudioDts, frame.DebugString()) - return + } else { + frame.Dts -= f.basicAudioDts } - frame.Dts -= f.basicAudioDts frame.Pts = frame.Dts + 90*uint64(frame.Cts) } else if frame.Sid == mpegts.StreamIdVideo { if f.basicVideoDts == math.MaxUint64 { @@ -55,9 +55,9 @@ func (f *Rtmp2MpegtsTimestampFilter) Do(frame *mpegts.Frame) { } if frame.Dts < f.basicVideoDts { Log.Warnf("[%s] video dts invalid. dts=%d, base=%d, frame=%s", f.uk, frame.Dts, f.basicVideoDts, frame.DebugString()) - return + } else { + frame.Dts -= f.basicVideoDts } - frame.Dts -= f.basicVideoDts frame.Pts = frame.Dts + 90*uint64(frame.Cts) } }