[FFmpeg-user] cannot seek into png 'video'
Thorsten von Eicken
tve at voneicken.com
Tue Oct 1 19:12:21 EEST 2019
On 10/1/19 8:37 AM, Carl Eugen Hoyos wrote:
> Am Di., 1. Okt. 2019 um 16:48 Uhr schrieb Thorsten von Eicken
> <tve at voneicken.com>:
>> On 10/1/19 12:35 AM, Moritz Barsnick wrote:
>>> Moin Thorsten,
>>>
>>> On Tue, Oct 01, 2019 at 00:56:33 +0000, Thorsten von Eicken wrote:
>>>> I'm trying to put an overlay over a video and I'm having difficulties
>>>> seeking into the png in order to time-shift the video and overlay
>>>> relative to one another.
>>> I don't really understand what you are trying to do, neither from this
>>> sentence:
>>>
>>>> If I'd now like to skip the first 10 seconds of the overlay in order to
>>>> line up the timing better I try to use:
>>> "Line up timing" or "time shift" are nice terms, but all "-ss" does it
>>> to shift the starting point of the input file to a certain point. E.g.
>>> "-ss 10" skips the first 10 seconds.
>> The png input is not a single static image, it is a sequence of images,
>> i.e. a video in png format. Like mjpeg but png.
> You cannot (in general) seek in such a stream.
>
> Use files that can be accessed with %d instead, seeking works
> with img2dec for multiple files.
>
> Carl Eugen
I did figure it out, the way to synchronize the two videos with
one-another is to use the setpts filter. Instead of:
-filter_complex "[0:v]setpts=PTS-STARTPTS[top];
[1:v]setpts=PTS-STARTPTS[bottom];
[top][bottom]overlay=x=(W-w)/2:eof_action=pass"
I can use something like the following to make the overlay start 5
minutes 51 seconds into the 'base' video:
-filter_complex '[0:v]setpts=PTS-STARTPTS[top];
[1:v]setpts=PTS-STARTPTS+351[bottom];
[top][bottom]overlay=x=(W-w)/2:eof_action=pass'
Note that 351 frames corresponds to 351 seconds due to the 1 fps and 1
tbn of the overlay and 351 seconds = 5 minutes 51 secs.
Thanks for the replies!
Thorsten
More information about the ffmpeg-user
mailing list