Is there objection? will push it tomorrow.

On Thu, 6 May 2021, Shiwang.Xie wrote:


if input start time is not 0 -t is inaccurate doing stream copy,
will record extra duration according to input start time.
it should base on following cases:

input video start time from 60s, duration is 300s,
1. stream copy:
      ffmpeg -ss 40 -t 60 -i in.mp4 -c copy -y out.mp4
  open_input_file() will seek to 100 and set ts_offset to -100,
  process_input() will offset pkt->pts with ts_offset to make it 0,
  so when do_streamcopy() with -t, exits when ist->pts >= recording_time.

2. stream copy with -copyts:
      ffmpeg -ss 40 -t 60 -copyts -i in.mp4 -c copy -y out.mp4
  open_input_file() will seek to 100 and set ts_offset to 0,
  process_input() will keep raw pkt->pts as ts_offset is 0,
  so when do_streamcopy() with -t, exits when
  ist->pts >= (recording_time+f->start_time+f->ctx->start_time).

3. stream copy with -copyts -start_at_zero:
      ffmpeg -ss 40 -t 60 -copyts -start_at_zero -i in.mp4 -c copy -y out.mp4
  open_input_file() will seek to 120 and set ts_offset to -60 as start_to_zero 
option,
  process_input() will offset pkt->pts with input file start time,
  so when do_streamcopy() with -t, exits when ist->pts >= 
(recording_time+f->start_time).

0      60     40      60                     360
|_______|_____|_______|_______________________|
     start   -ss     -t

This fixes ticket #9141.

Signed-off-by: Shiwang.Xie <shiwang.xie...@outlook.com>
---
fftools/ffmpeg.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to