From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id B80634106A for ; Thu, 14 Jul 2022 04:48:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8859868B9B7; Thu, 14 Jul 2022 07:48:40 +0300 (EEST) Received: from out203-205-221-233.mail.qq.com (out203-205-221-233.mail.qq.com [203.205.221.233]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DF1E868B947 for ; Thu, 14 Jul 2022 07:48:31 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1657774105; bh=JU+Dl0Js1+P7vNWLgvF/RXPTLMEgo9T0Rckw6RP5+ZM=; h=From:To:Cc:Subject:Date; b=agmua9lB8IlcPmj8Hsx95aR3obet/KhsmsF+ZzuYEceA3G64Lswovw4isTLA/5+wI ntszCkr5jV4RzcmpLdVguVs/cbOpvWs76gz2K1c9ey+M4w5fMHr4SNARnNSuKju+b0 RfoVkTpmELCUGY93hWhG10W8Ll89Utrge8BlB5tY= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.51]) by newxmesmtplogicsvrsza8.qq.com (NewEsmtp) with SMTP id C189D885; Thu, 14 Jul 2022 12:48:24 +0800 X-QQ-mid: xmsmtpt1657774104ta2xjmcdv Message-ID: X-QQ-XMAILINFO: OfkeHAqGKDFb/exY4R/icGPXSz10+ZtVTKLNZuSM8LQunciMe+zKcYk+J/iOhv p0f1GV/ZPYidyEpxqi9vTGliXNq496yjC+h5/jeBs+bB1HmKS1q3QbKStNfVu6fzGCWbCdVfQG0J g1AOdsNAPQEOjUoz11e98DvEsBQ62vADG/c1XKWNVk86BhGa2tP8s+rsGaJG2wCPD2tTS1F1yqmD zbi/QdyM5mkNvjU+pJ32lEmSh/Ml/3yuPxOI1xXdT80K1sAEfyqCfhLOXUXZa2VSG7Nq43PCAEVH sQaggE8dsOOo+BmJLWbAIPhErDilOKWF2lCUFNdPDGeViIkyB3eVbyTvF8O3uahvo2b9pCSDA+tM a1B6uc5S+br1NNPvLfQZJVoNlnrqo76gqnKQupIw9XEM2cDkQd8/y9fshX9fVskfWxh+uDu/Rzar LwPc5Vem+LlvLfC/tDGJrAb+YvuwoywmyvFrfjTdKNqESpFfO6H/w/hn4RMvhWVWLCagE41DByFM W7N07K5xEKC1iUxHbOygf97WRqtWZvjEGUiQrZ2ibNxkMVXqQFj6qOAwRXTrjuxS6M5hBIIFF47b xsxm1w6RN1Bf5uIcFL1PnM70FRpD5xHB6yrU1OPik+7Ep/s8bITtuZ9Tyk0P0IUni7c466lmMabm JIyuGVfqKFDI1p/ltV1Th1+KuQWsOLmhUDQeOpSyddILvU5Jkc0V4+q4zgG5RbJDtuSaIlRBWH5k lc+WP9eDRGDWtj7mJzn/KL+i7hdwS+nZqpap4d02EwMqO9cDESX556rUNrY8xJrQglvA1zIUqguV yOw3h4MeXVadkeXAtrhVa1y7OZn3lDtkmTYrJoYfmjJfW4/D515g8/ww7zYOcZw81UmLtDxHkT9t wMqx6Fwdg0dgYe5Yt0m9QTo0rEokPVBEWDY2csTETs1hOuWgO7xek0UUMxgwydhH37sK5wkm9G From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 14 Jul 2022 12:48:13 +0800 X-OQ-MSGID: <20220714044814.72083-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avformat/flvenc: fix timestamp of key frame index X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: lingjiujianke@gmail.com, Zhao Zhili Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Zhao Zhili Firstly, the timestamps generated from framerate are inaccurate for variable framerate mode. Secondly, the timestamps always start from zero, while pts/dts can start from nonzero. FLV demuxer rejects such index with message: "Found invalid index entries, clearing the index". --- libavformat/flvenc.c | 5 +---- tests/ref/fate/flv-add_keyframe_index | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/libavformat/flvenc.c b/libavformat/flvenc.c index 770ca319ed..1c4ffb985a 100644 --- a/libavformat/flvenc.c +++ b/libavformat/flvenc.c @@ -104,7 +104,6 @@ typedef struct FLVContext { int64_t lastkeyframelocation_offset; int64_t lastkeyframelocation; - int acurframeindex; int64_t keyframes_info_offset; int64_t filepositions_count; @@ -391,7 +390,6 @@ static void write_metadata(AVFormatContext *s, unsigned int ts) } if (flv->flags & FLV_ADD_KEYFRAME_INDEX) { - flv->acurframeindex = 0; flv->keyframe_index_size = 0; put_amf_string(pb, "hasVideo"); @@ -993,8 +991,7 @@ static int flv_write_packet(AVFormatContext *s, AVPacket *pkt) switch (par->codec_type) { case AVMEDIA_TYPE_VIDEO: flv->videosize += (avio_tell(pb) - cur_offset); - flv->lasttimestamp = flv->acurframeindex / flv->framerate; - flv->acurframeindex++; + flv->lasttimestamp = pkt->dts / 1000.0; if (pkt->flags & AV_PKT_FLAG_KEY) { double ts = flv->lasttimestamp; int64_t pos = cur_offset; diff --git a/tests/ref/fate/flv-add_keyframe_index b/tests/ref/fate/flv-add_keyframe_index index 39c4bed85a..6549170a68 100644 --- a/tests/ref/fate/flv-add_keyframe_index +++ b/tests/ref/fate/flv-add_keyframe_index @@ -1,4 +1,4 @@ -5f38d76da3ed4a5be06ca604c53666f2 *tests/data/fate/flv-add_keyframe_index.flv +9f3d6de74f3329651a4c515c20cea00f *tests/data/fate/flv-add_keyframe_index.flv 630192 tests/data/fate/flv-add_keyframe_index.flv #tb 0: 1/1000 #media_type 0: video -- 2.35.3 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".