[FFmpeg-devel] [PATCH] ffmpeg: switch to avformat_seek_file for stream_loop
Gyan
ffmpeg at gyani.pro
Sat Aug 31 17:58:51 EEST 2019
A user observed that stream_loop didn't work with very short FLV files.
seek_to_start in ffmpeg.c calls av_seek_frame with no flags; FLV seek
only works with RTMP protocol so lavf falls back on seek_frame_generic
which searches forward, skipping a GOP. With files with two index
entries in stream, the file doesn't loop at all.
I switched to avformat_seek_file which will set the BACKWARDS flag when
seeking to start of file. stream_loop works and no frames are dropped.
FATE passes.
Gyan
-------------- next part --------------
From 4af64f612c65378f0a220284ca99ad033ece8cd3 Mon Sep 17 00:00:00 2001
From: Gyan Doshi <ffmpeg at gyani.pro>
Date: Sat, 31 Aug 2019 19:45:58 +0530
Subject: [PATCH] ffmpeg: switch to avformat_seek_file for stream_loop
Fixes stream_loop with very short files where seeking is generic index
search
---
fftools/ffmpeg.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 01f04103cf..b6ecb89893 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -4195,7 +4195,7 @@ static int seek_to_start(InputFile *ifile, AVFormatContext *is)
int i, ret, has_audio = 0;
int64_t duration = 0;
- ret = av_seek_frame(is, -1, is->start_time, 0);
+ ret = avformat_seek_file(is, -1, INT64_MIN, is->start_time, is->start_time, 0);
if (ret < 0)
return ret;
--
2.22.0
More information about the ffmpeg-devel
mailing list