Como uso o MEncoder para codificar todos os arquivos png (no diretório atual) como um arquivo avi em ordem de modificação de data?

4

Então eu quero que o MEncoder codifique todos os arquivos png como um arquivo avi desde a data mais antiga modificada até a última data modificada, e gostaria que cada quadro fosse espaçado em 3 segundos.

    
por InquilineKea 11.12.2012 / 20:25

1 resposta

3

A sintaxe mf: // diz que você pode passar um arquivo de lista, assim você pode passar uma lista de arquivos, classificados por data, dessa forma.

Para classificar seus arquivos, se os nomes forem simples o suficiente e eles estiverem todos em um diretório, ls -t fará: ls -t *.png > file-list .

Então mencoder mf://@file-list -mf fps=1/3:type=png … deve fazer isso (você pode verificar facilmente usando mplayer no lugar do mencoder).

Se você precisa lidar com coisas mais complicadas (por exemplo, subdiretórios), você pode usar o comando find e perl juntos. Estou ignorando a possibilidade de novas linhas nos nomes dos arquivos, pois duvido que mencoder possa lidar com isso:

find -type f -name '*.png' | perl -E 'chomp(@a = <>); @a = sort { -M $a <=> -M $b } @a; $,="\n"; say @a'

Isso não é particularmente eficiente (ele chama stat mais do que o necessário), mas é bom o suficiente, a menos que você tenha muitos arquivos. A eficiência poderia ser melhorada por uma manobra de Orc, Schwartzian, etc., se você precisar de milhares de arquivos.

    
por 11.12.2012 / 21:50

Tags