Como qt-faststart vários arquivos?

1

Vários dos meus álbuns têm seus metadados no final dos arquivos. Isso é bom até que você realmente deseja transmitir um deles para um media player de rede. O jogador ou joga fora ou reclama.

Felizmente, há uma pequena ferramenta que pode extrair os dados do final e injetá-los na frente. Menos boa é a sua sintaxe. Este é o único formato que aceita:

qt-faststart <infile.mov> <outfile.mov>

Não há opção para passar um diretório para ele. Nenhuma opção para vários arquivos. Nenhuma opção para fixação no local.

Como posso fazer um comando como este funcionar para meus arquivos, supondo que eu queira manipular todos os arquivos em um diretório com a mesma extensão, dada?

    
por Oli 28.03.2014 / 19:24

2 respostas

1

O maior problema aqui é não conseguir sobrescrever o mesmo arquivo. Precisamos tirar o arquivo do caminho e depois escrever o novo com qt-faststart e depois limpar:

find -iname '*m4a' -exec sh -c 'mv "{}" tmp; qt-faststart tmp "{}"; rm tmp' \;

Bish bash bosh, álbum fixo.

    
por Oli 28.03.2014 / 19:24
1

Eu mexi na resposta de Oli. Se isso for um erro (ou seja, se o MOOV não estiver no final do arquivo), o script acima resultará na exclusão do arquivo. Esta versão evita isso por mv'ing o arquivo tmp no final. Se o qt-faststart falhar, não haverá nenhum arquivo tmp, então o mv também falhará, revertendo o arquivo original.

find -iname '*.mp4' -exec sh -c 'echo "{}"; qt-faststart "{}" tmp; mv tmp "{}" ' \;
    
por Tom P 05.01.2015 / 00:28