[FFmpeg-user] How to properly pasting same-size video parts together into one output?

Bo Berglund bo.berglund at gmail.com
Tue Jan 25 10:35:59 EET 2022


This is about ffmpeg usage on Linux...

I am nightly downloading news shows from several sources and sometimes a show
from one might be bad at the end and another at the beginning.
So I use ffmpeg to cut out the good parts from both and then paste them together
using this method in a "paste" script:
1) create a joinfile listing all of the parts to paste
2) create the output video using this:
   ffmpeg -f concat -safe 0 -i $JOINFILE -c copy $TARGETFILE

This always works for parts extracted from the same video (commercial removal)
and often also from parts coming from different download sources. The download
script always converts the videos on the fly to the same 852x480 pixel format.

But sometimes the video parts seems to paste OK but the audio is either missing
in later parts or severely shifted (by many seconds it seems like).

Each small part when played by itself is perfectly OK.

How would the command look like in order to combine the video parts such that
audio and video are not shifted?

I have tried this but it failed:

ffmpeg -hide_banner -i input.1.mp4 -i input.2.mp4 -filter_complex "[0:v] [0:a]
[1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4

Output (after the normal ffmpeg stuff):

[Parsed_concat_0 @ 0x55c0837c7400] Input link in0:v0 parameters (size 852x480,
SAR 0:1) do not match the corresponding output link in0:v0 parameters (852x480,
SAR 640:639)
[Parsed_concat_0 @ 0x55c0837c7400] Failed to configure output pad on
Parsed_concat_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #1:0
Conversion failed!

I don't know what the (852x480,SAR 640:639) part of the output means, so I am
clueless here.
I would like to create a paste script that can handle these situations when the
existing script using the command on top does not work. The existing paste
script is very fast but it does not re-encode anything, I believe.

Any suggestions welcome.


-- 
Bo Berglund
Developer in Sweden



More information about the ffmpeg-user mailing list