Video download link
Summary: In order to enrich the looks of videos with almost no extra time/effort (all scripted, no GUIs should be needed) use ffmpeg
with the concat
operator; but there are several big gotchas, namely lack of sound and need for consistency across formats/codecs and even sampling rates
TODAY we focused on some site 'logistics' and especially dealt with video and sound. The goal is to automate some tasks and/or improve the presentation of multimedia using Free software. Free as in freedom...
Frankly, the tool we used to generate some video segments was an "online" thing
called Canva (never heard of it before, but it seems powerful enough and doesn't require downloading anything, logging in etc. -- not even an E-mail address). On the face of it, problem solved! But no... it gets trickier from then on. I spent many hours working around barriers.
Well,
ffmpeg
is very powerful and extremely versatile. However, as it turns out,
ffmpeg
will first need to convert
.mp4
files downloaded from there (Canva) so as to incorporate sound, even if it's just mute (inaudible sound track).
For this reason and for that purpose, as per people who had similar issues concatenation tracks that lack sound (merged or combined with some that
do have sound), run a command as follows (depending on the sampling rate, 48000 in my case, or else the sound/pitch will be funny).
ffmpeg -i "file.mp4" -f lavfi -i anullsrc=cl=mono:r=48000 -shortest -y "file-new.mp4"
Assuming you now have a track that is compatible with what you'd merge it with, ensure that the original is moreover re-encoded for it to be applied
consistently. As I always record as WebM, I need to then run (for a video like the above):
ffmpeg -i video-ffmpeg-concat.webm -c:v libx264 -preset slow video-ffmpeg-concat.mp4
This yields something suitable as it must be strictly compatible in sampling, codec type, and other factors. That's a limitation in
ffmpeg
. This is a common issue for a lot of people and it took me hours to overcome (many trials and errors). I wished to document this as other people too got stuck (many forum posts).
Depending on which files you wish to concatenate with (and the order), write down the 'recipe', e.g. recipe.txt, containing
file file-new.mp4
file testing-6.mp4
file outro-new.mp4
Relative paths too can be
prepended (e.g.
file Videos/outro-new.mp4
). The
ffmpeg
documentation explains the syntax better. There's a lot more about
concat
[
1,
2].
Then run everything as follows:
ffmpeg -f concat -i recipe.txt output.webm
The reason the assembly of files is done with
.mp4
files (to yield a WebM) is the insistence of Canva that downloaded videos are either MP4 or GIF. There must be some better ways and I'll improve this over time (this is all still very fresh in the mind; I've spent a lot of time on this).
From now on we have the ability to make videos that are 1) smaller in size because of re-encoding with strong compression and 2) have a little bit of extra context. We'll improve this over time and push to
git
.
⬆
Update: This is what the outcome can look like (mind start and end of clip).
Video download link