ffmpeg batch converte .avi para .mp4 - em cinza

0

Estou procurando converter em lote um diretório (ou vários) de arquivos de vídeo de .avi para contêineres .mp4, apenas copiando os fluxos de vídeo e áudio. Eu sei que o comando ffmpeg faz isso e não tenho problemas para fazer os arquivos individualmente.

Eu não estou familiarizado com ash (em oposição a bash ) e seus procedimentos de manipulação de arquivo e looping, o que dificulta a gravação de um script de shell. (Ele tem que rodar em cinza porque está sendo executado em um Synology NAS fraco).

    
por Casey Bennetto 11.04.2015 / 07:37

2 respostas

2

Você deve estar bem se mantiver a sintaxe do shell Bourne, o mais importante para o seu aplicativo deve ser o loop for.

 #/bin/ash

 for filename in *.avi
 do
      ffmeg parameters "$filename"
 done
    
por 11.04.2015 / 08:00
0

Eu uso dois scripts para isso ele usa o handbreak para fazer a conversão, mas poderia ser modificado para o usuário ffmpeg (mas lembre-se que o ffmpeg está depreciado).

Eu corro o process.sh e ele encontra, em seguida, percorre, executando o encode.sh para cada arquivo.

process.sh

if [ "$1" != "" ]; then
    dir="$1"
else
    dir="/Data/Movies"
fi

if [ -e /tmp/process.lock ] ; then 
    echo "Process already running"
else
    echo 'date' > /tmp/process.lock
    find "$dir" \( -mmin +10 -name "*.avi" -o -name "*.mkv" -o -name "*.mpg" \) -exec echo "{}" \; > /tmp/list
    cat /tmp/list | wc -l
    read -p "Pausing...."
    find "$dir" \( -mmin +10 -name "*.avi" -o -name "*.mkv" -o -name "*.mpg" \) -exec /home/coteyr/encode.sh "{}" \;
    rm /tmp/process.lock
fi

e encode.sh

#!/bin/bash
echo "$1" > /tmp/current_encode.txt
nice -n 19 HandBrakeCLI -T -Z Normal -i "$1" -o "$1.m4v" > /tmp/progress.log
mv "$1" /Data/Temp/
echo "Idle" > /tmp/current_encode.txt
echo "Idle" > /tmp/progress.log
    
por 11.04.2015 / 16:05