user23317: I never worked with ffmpeg before and I'm wondering which optimization I can take for my situation.
In a loop I have multiple input.mp4 files which I first convert one by one to have a common scale and audio rate with this command: 
ffmpeg -i input_01.mp4 -vf 'scale=1280:720,setdar=16/9' -ar 44100 -ac 1 input_01_tmp.mp4
Later I add images to each input.mp4 files again one by one:
ffmpeg -i input_01_tmp.mp4 -i input_01_logo.png -filter_complex "[0:v][1:v]overlay=10:10:enable='between(t,2,11)',fade=t=in:start_time=1.5:d=0.5:alpha=1,fade=t=out:start_time=10.5:d=0.5:alpha=1[fg];[0][fg]overlay=format=auto,format=yuv420p" -c:a copy input_01_unified.mp4
Finally after the loop I combine them with mkvmerge:
mkvmerge -o output.mkv \+ input_01_unified.mp4 +\ input_02_unified.mp4 ...
I'm sure this is not the optimal solution and wondering how I should change it. 
Is it possible to do all of this in one command? Either for each file or for the whole process.

user1871: The single command will be long, but here's an example for 3 inputs.
ffmpeg -i input_01.mp4 -loop 1 -t 11 -i input_01_logo.png
       -i input_02.mp4 -loop 1 -t 11 -i input_02_logo.png
       -i input_03.mp4 -loop 1 -t 11 -i input_03_logo.png
       -filter_complex
        "[0]scale=1280:720,setsar=1[0v];
         [1]fade=t=in:st=1.5:d=0.5:alpha=1,fade=t=out:st=10.5:d=0.5:alpha=1[0l];
         [2]scale=1280:720,setsar=1[1v];
         [3]fade=t=in:st=1.5:d=0.5:alpha=1,fade=t=out:st=10.5:d=0.5:alpha=1[1l];
         [4]scale=1280:720,setsar=1[2v];
         [5]fade=t=in:st=1.5:d=0.5:alpha=1,fade=t=out:st=10.5:d=0.5:alpha=1[2l];
         [0v][0l]overlay=10:10:format=auto:enable='between(t,2,11)'[0vl];
         [1v][1l]overlay=10:10:format=auto:enable='between(t,2,11)'[1vl];
         [2v][2l]overlay=10:10:format=auto:enable='between(t,2,11)'[2vl];
         [0]pan=1c,aresample=r=44100[0a];
         [2]pan=1c,aresample=r=44100[1a];
         [4]pan=1c,aresample=r=44100[2a];
         [0vl][0a][1vl][1a][2vl][2a]concat=n=2:v=1:a=1[v][a]"
        -map "[v]" -map "[a]" -pix_fmt yuv420p output.mkv

You may need single quotes in the map depending on your shell.
Use a recent version of ffmpeg, at least 4.0

23317: <p>I never worked with ffmpeg before and I'm wondering which optimization I can take for my situation.</p>

<p>In a loop I have multiple input.mp4 files which I first convert one by one to have a common scale and audio rate with this command: </p>

<p><code>ffmpeg -i input_01.mp4 -vf 'scale=1280:720,setdar=16/9' -ar 44100 -ac 1 input_01_tmp.mp4</code></p>

<p>Later I add images to each input.mp4 files again one by one:</p>

<p><code>ffmpeg -i input_01_tmp.mp4 -i input_01_logo.png -filter_complex "[0:v][1:v]overlay=10:10:enable='between(t,2,11)',fade=t=in:start_time=1.5:d=0.5:alpha=1,fade=t=out:start_time=10.5:d=0.5:alpha=1[fg];[0][fg]overlay=format=auto,format=yuv420p" -c:a copy input_01_unified.mp4</code></p>

<p>Finally after the loop I combine them with mkvmerge:</p>

<p><code>mkvmerge -o output.mkv \+ input_01_unified.mp4 +\ input_02_unified.mp4 ...</code></p>

<p>I'm sure this is not the optimal solution and wondering how I should change it. </p>

<p>Is it possible to do all of this in one command? Either for each file or for the whole process.</p>
 1871: <p>The single command will be long, but here's an example for 3 inputs.</p>

<pre><code>ffmpeg -i input_01.mp4 -loop 1 -t 11 -i input_01_logo.png
       -i input_02.mp4 -loop 1 -t 11 -i input_02_logo.png
       -i input_03.mp4 -loop 1 -t 11 -i input_03_logo.png
       -filter_complex
        "[0]scale=1280:720,setsar=1[0v];
         [1]fade=t=in:st=1.5:d=0.5:alpha=1,fade=t=out:st=10.5:d=0.5:alpha=1[0l];
         [2]scale=1280:720,setsar=1[1v];
         [3]fade=t=in:st=1.5:d=0.5:alpha=1,fade=t=out:st=10.5:d=0.5:alpha=1[1l];
         [4]scale=1280:720,setsar=1[2v];
         [5]fade=t=in:st=1.5:d=0.5:alpha=1,fade=t=out:st=10.5:d=0.5:alpha=1[2l];
         [0v][0l]overlay=10:10:format=auto:enable='between(t,2,11)'[0vl];
         [1v][1l]overlay=10:10:format=auto:enable='between(t,2,11)'[1vl];
         [2v][2l]overlay=10:10:format=auto:enable='between(t,2,11)'[2vl];
         [0]pan=1c,aresample=r=44100[0a];
         [2]pan=1c,aresample=r=44100[1a];
         [4]pan=1c,aresample=r=44100[2a];
         [0vl][0a][1vl][1a][2vl][2a]concat=n=2:v=1:a=1[v][a]"
        -map "[v]" -map "[a]" -pix_fmt yuv420p output.mkv
</code></pre>

<p>You may need single quotes in the <code>map</code> depending on your shell.</p>

<p>Use a recent version of ffmpeg, at least 4.0</p>
