Conversão em lote de arquivos do módulo com XMP

5

Eu tenho o seguinte script para converter um grande grupo de arquivos .MOD e .XM no formato Wave:

#!/bin/bash

for f in ./XM.* ./MOD.*
    do
    xmp $f -d wav -o - | ffmpeg -i - -acodec libmp3lame -ab 320k "$f.mp3"
done

Mas não funciona como esperado. O programa acabou de desligar. Ele cria o arquivo .wav, mas nada mais. (Não escreve nele) Mesmo o switch -vvv não fornece nenhuma informação. O estranho é: se eu preceder "strace", está funcionando bem.

Alguma idéia / solução alternativa?

    
por Noir 22.11.2012 / 16:52

1 resposta

2

Talvez o xmp fique confuso porque o stdin não é um tty? Você poderia tentar:

xmp $f -d wav -o - </dev/null | ffmpeg -i - -acodec libmp3lame -ab 320k "$f.mp3"

Além disso, imagino que a ordem dos argumentos precisa ser

xmp -d wav -o - "$f" </dev/null | ffmpeg -i - -acodec libmp3lame -ab 320k "$f.mp3"

No Ubuntu 14.04 com xmp 4.0.6 e avconv ao invés de ffmpeg, a ordem precisa estar com a opção -d wav mais tarde ou o raw será usado

xmp -o - -d wav "$f" | avconv -i - -b 320k "$f.mp3"
    
por 20.06.2013 / 11:01