On Sat, Mar 27, 2021 at 05:53:56AM +0100, Cecil Westerhof via ffmpeg-user wrote:
> Peter White <peter.wh...@posteo.net> writes:
> 
> > On Fri, Mar 26, 2021 at 07:02:13PM +0100, Cecil Westerhof via ffmpeg-user 
> > wrote:
> >> Carl Zwanzig <c...@tuunq.com> writes:
> >> 
> >> > On 3/26/2021 9:28 AM, Cecil Westerhof via ffmpeg-user wrote:
> >> >> There is only one problem. The video is 7:21 long, but both mpv and
> >> >> vlc think it is 7:30 long.
> >> >
> >> > IME, the metadata length often lies. When you say it's 7:21, is that
> >> > exactly how long it plays for or how long it ought to be?
> >> 
> >> I almost never have this. (If I remember well, only with videos
> >> created with ffmpeg. Sometimes it started on a negative timestamp
> >> instead of 00:00:00.)
> >> 
> >> Looking at the -to you would expect 7:22, but when I just play it, it
> >> ends at 7:21.
> >
> > You can try using -to as an input option as well. I am not sure, but I
> > seem to remember having similar problems once. Also, have a look at -t
> > for defining the length of the file as opposed to cutting on time code.
> 
> That is what I did first. Then I got 1:34:19 (or something like it).
> So even worse.

When you say "first", was that with -vcodec copy? Because that might
explain it. Although, I do not know why the file would be so much
longer. May be that data stream.

BTW, you can use "time codes" for -ss, -to and -t, too. Personally, I do
not like having to calculate in seconds when I can simply use the
timestamps shown by a player. It is much more intuitive, to me at least,
to just say: cut from (-ss) 19:45 -to 27:11 instead of from 1190 to
1631. But that, of course, depends on how you retrieved those timestamps
in the first place.

I now think, I know why I had problems in the past with -ss as an input
and -to as an output option in combination. By using -ss as input
option, the output timestamps start at 0, thus -to, in this scenario, is
the same as -t, resulting a file of that length. Hence, I suggest to
either use both -ss and -to as input or as output options and not mix
them as one input and the other as output option.

From my understanding the difference between them being used as input or
output options, respectively, is that when used as input options they
tell the *demuxer* to seek and stop at the given timestamps. Or, more
precisely, the demuxer seeks to the last keyframe before the -ss
timestamp and the decoder starts decoding from there, discarding all
frames before the accurate timestamp.

When used as output option that applies to the *decoder*, with "copy"
being a special case. Because of this, you might need to wait a long
time for the encoding to start, when using them as output options, since
the decoder needs to get to the -ss timestamp by decoding frames which
get discarded.

What I am trying to say is: use -ss and -t(o) as input option whenever
you can, unless there is a very good reason--whatever that might be--for
using them as output options.


Cheers,
Peter
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Reply via email to