Concatena arquivos consecutivos

2

Eu tenho uma lista de vídeos em um diretório que quero concatenar.

Video1.mpg
Video2.mpg
.
.
.
Video35.mpg

Eu quero concatenar isso na ordem de seu número sem ter que escrever todos eles manualmente no comando cat.

    
por medicengonzo 15.03.2017 / 02:28

3 respostas

1

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.

    
por 15.03.2017 / 10:16
0

Use expansão de contraventamento de Bash.

cat Video{{1..9},{10..35}}.mpg > outputfile

No futuro, use 0 padding ao nomear os arquivos originalmente, para que você possa fazer:

cat Video{01..35}.mpg > outputfile
    
por 15.03.2017 / 03:10
-1

Aqui está uma maneira:

cat $(ls Video*.mpg | sort -to -k2 -n )>outputfile  

ls Video*.mpg - lista arquivos com base no padrão
sort -to -k2 -n - classifica os arquivos usando o como um delimitador, segunda chave e -n para numérico

* Por favor, perceba que usar ls em uma lista desconhecida de arquivos pode ser imprevisível, mas essa é uma lista relativamente pequena e conhecida, baseada na pergunta.

    
por 15.03.2017 / 03:13