Meu script, apenas em bash
e ffmpeg
. Recodifica os arquivos fornecidos em uma linha de comando em um.
Requer que os arquivos tenham a mesma resolução. Aceita rotação de metadados diferente, o que ffmpeg concat:
não faz.
rm ffmpeg-concat-output.mkv
FILE_COUNT=$#
INPUTS=""
FILTER=""
INDEX=0
for FNAME in $@; do
echo "Processing ${FNAME}"
INPUTS="${INPUTS} -i $FNAME"
if [ -z "${FILTER}" ]; then
FILTER="[$INDEX:v:0] [$INDEX:a:0]"
else
FILTER="${FILTER} [$INDEX:v:0] [$INDEX:a:0]"
fi
let INDEX+=1
done
COMMAND="ffmpeg ${INPUTS} \
-filter_complex '${FILTER} \
concat=n=${INDEX}:v=1:a=1 [v] [a]' \
-map '[v]' -map '[a]' \
ffmpeg-concat-output.mkv"
# -af 'volume=15dB' # won't work with -filter_complex
bash -c "${COMMAND}"