Com zsh
e ffmpeg
:
files=(Video*.mpg(n))
ffmpeg -f concat -safe 0 -i <(printf 'file %s\n' ${(qq)files}) -c copy output.mpg
(n)
in zsh
é um qualifier para classificar numericamente. (qq)
é um sinalizador de expansão variável para citar com aspas simples. Não garantirei que as citações exatamente iguais às esperadas por ffmpeg
se os nomes dos arquivos contiverem aspas simples ou barras invertidas ou caracteres de nova linha.
Tanto quanto eu entendo, o acima pressupõe que o mesmo codec é usado em todos os arquivos mpg.
AFAICT, por mpeg
arquivos especificamente, os arquivos também podem ser concatenados no nível do arquivo e ainda reproduzidos pela maioria dos jogadores, então você também pode simplesmente fazer (ainda com zsh
):
cat Video*.mpg(n) > output.mpg
Embora o zsh
esteja instalado por padrão no macOS, ele não é o shell padrão que você obtém em um terminal, a menos que você tenha explicitamente alterado seu shell de login do padrão bash
. Então, você precisaria iniciar zsh
primeiro, inserindo zsh
no prompt do bash
shell no terminal ou executar:
zsh -c 'cat Video*.mpg(n) > output.mpg'
em vez disso.