[FFmpeg-user] Video in video not from start

Cecil Westerhof Cecil at decebal.nl
Fri Jan 5 13:14:23 EET 2024


Cecil Westerhof via ffmpeg-user <ffmpeg-user at ffmpeg.org> writes:

> Ferdi Scholten <ferdi at sttc-nlp.nl> writes:
>
>> I want to play a video in a video from a certain point. I understood I
>>> could do something like:
>>>      ffmpeg              \
>>>        -i input1.mp4     \
>>>        -i input2.mp4     \
>>>        -filter_complex "
>>>          [0:v][1:v] overlay=25:25:
>>>          enable='between(t,8,20)'
>>>        "                 \
>>>        -pix_fmt yuv420p  \
>>>        -c:a copy         \
>>>        output.mp4
>>>
>>> But this starts input2.mp4 from the start of input2.mp4 on the 8
>>> second, for twelve seconds.
>>> Is it possible to let input2.mp4 not start from second 0, but from
>>> second 17?
>>>
>> Try putting -ss 17 between the two inputs.
>
> I was thinking about that. But that means that if I want to use
> input2.mp4 several times, I should use input2.mp4 several times with
> the correct -ss. Not really a problem, but I had hoped for a more
> efficient way. But I will use it like this for the moment then.
> Thanks.

At the moment I have:
    ffmpeg -y                           \
      -to 30        -i "${inputFile}"   \
      -ss 11 -to 28 -i "${overlayFile}" \
      -filter_complex "
        [0:v][1:v] overlay=main_w-(overlay_w+10):10:
        enable='between(t,8,25)'
      "                                 \
      -pix_fmt yuv420p                  \
      -acodec libmp3lame                \
      -vcodec libx264                   \
      -preset veryfast                  \
      -crf 26                           \
      "${outputFile}"

It works, but I have a question and found a problem.

In most cases you will not encounter the problem, but because I am
testing I did encounter it.
First I used for the overlay file only '-ss 11'. But I needed the to
also, otherwise the video would freeze and keep playing.
But in a strange way. The overlay file is 60 seconds long. When
subtracting 11 seconds that leaves 49 seconds. The resulting video
would become 49 seconds long instead of 30 seconds. I would prefer 30
seconds of-course, but I do not understand the 49 seconds. The overlay
file starts at 8 seconds, so I find it strange that the file does not
continue to 57 seconds (49 + 8). This seems a double bug to me. (Not
using the length of the main file and using the length from the
overlay file without consideration when it starts.)


In my search to find this solution, I think I saw a method to scale
the overlay file. But I cannot find it anymore. :'-(
Am I mistaken, or is it possible? I would like to scale the overlay
file to 640:-2.

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof


More information about the ffmpeg-user mailing list