Parece que você está usando uma versão antiga do file
, onde arquivos MKV não foram detectados corretamente . Você pode usar este arquivo ~/.magic
para ter file
de identificação de MKV.
Mas, na verdade, a maneira mais confiável de verificar se há arquivos de vídeo válidos seria simplesmente executar avconv
e ver se ele falha ou não. Veja o que você pode fazer:
#!/bin/bash
FOLDER_SRC="/home/J/Music/TestBatchConv"
find "$FOLDER_SRC" -type f -print0 | while IFS= read -r -d '' myvid; do
echo "Trying to convert $myvid"
avconv -i "$myvid" -c:a libmp3lame -q:a 4 "${myvid%.*}.mp3" 2>/dev/null || echo "$myvid is not a valid file."
done
Se o arquivo não for um vídeo válido, ou se houver algum erro, avconv
será encerrado mesmo assim.
Algumas dicas e explicações:
-
Não há sem necessidade de analisar a saída de
ls
oufind
. Simplesmente usefor myvid in "$FOLDER_SRC"/*
ou, para uma versão recursiva, use o**
glob com a opçãoglobstar
. Aqui, a linhafind … | while …
pode ser substituída por:shopt -s globstar for myvid in "$FOLDER_SRC/**"; do
-
Não se esqueça de citar corretamente
"$myvid"
onde quer que você o use no loop, caso contrário, vídeos com espaços em branco no nome quebrarão seu script. - Você pode remover a extensão do arquivo original removendo qualquer coisa após o último ponto
${myvid%.*}
e substituí-la por.mp3
. - Você deve informar
avconv
para usar a variável codificação de taxa de bits paralibmp3lame
, por exemplo com-q:a 4
, com valores variando de 0 a 10 e 4 sendo o padrão. Isso proporcionará melhor qualidade de áudio em geral.