Como posso automatizar o Handbrake para monitorar e codificar novos arquivos dentro de uma pasta?

5

Aqui está o que eu gostaria de fazer no Windows 7:

  1. Monitore uma pasta para novos arquivos ISO (ISOs Blu-ray).
  2. Quando houver um novo arquivo detectado, inicie o Handbrake em segundo plano e codifique o ISO para MKV com base em um perfil específico de qualidade de salvamento / nome do arquivo / local (isso requer a montagem do ISO?)
  3. Se o Handbrake já estiver fazendo uma operação, adicione o novo ISO detectado a uma fila de Travão de mão de algum tipo.

Não sei por onde começar. Algumas perguntas:

  • Devo obter algum software de monitoramento de arquivos que inicie um VBScript que faça o trabalho?
  • O Handbrake pode ser lançado em segundo plano ou via console para fazer o que eu quero fazer?
  • Existe uma maneira de adicionar à fila do Handbrake ou, pelo menos, detectar quando um trabalho foi concluído?
  • Se eu tiver que montar cada ISO, como posso fazer isso também?

Procurando ideias sobre como realizar isso.

    
por Ethan Allen 08.12.2012 / 21:41

1 resposta

2

Eu costumava fazer algo parecido com o que você está procurando. Este é um loop muito básico que procura por todos os arquivos com uma extensão .iso. Em seguida, ele os codifica no Xbox 360 predefinido com uma extensão .mp4. Salve esse arquivo como .bat e você pode executá-lo para codificar seus arquivos.

@echo off
for %%f in (*.iso) do (
    M:\HandBrakeCLI -i 'M:\encode\%%f' -o 'M:\encode\%%f.mp4' -Z 'Xbox 360' -S '700' -2 -T -L
)
pause

Esteja ciente de que o script acima irá codificar todos os arquivos na pasta M: \ encode \, então você vai querer adicionar um pouco mais de código. Uma opção seria mover os arquivos para fora desse diretório depois que eles forem codificados, outra opção seria verificar se o arquivo já foi codificado ou não.

Depois de ter o script como você deseja, você pode definir o Windows Scheduler para executar o script em um intervalo definido. Eu corro o meu todas as noites à meia-noite, mas se você quiser resultados mais rápidos, ele pode ser executado a cada 10 minutos (apenas certifique-se de não iniciar a codificação de um filme uma segunda vez se demorar mais de 10 minutos para codificar).

Desde então, mudei para o Linux e meu script Linux usa um pouco mais de lógica que você pode achar útil. Esse script verifica se o arquivo já foi codificado (se existir) e, se tiver, o ignora. Receio não ser bom o suficiente em Batch para escrever essa lógica sem alguma pesquisa, mas sei que é possível.

#### Checks if .mov file exists and encodes it if it does not exist ####
for file in *.ISO
do
    if [ -f /raid/mp4/${file%.*}.mov ] || [ -f /raid/mp4/${file%.*}.ISO.mov ]
    then
        echo "Already Encoded ${file}"
    else
        echo /media/raid/mp4/"${file%.*}.mov"
        HandBrakeCLI -i "${file}" --main-feature -o /media/raid/mp4/"${file%.*}.mov" -f mp4 -O --strict-anamorphic -e x264 -q 20 -a 1 -E faac -6 dpl2 -R Auto -B 160 -D 0.0 --markers="${file}-chapters.csv" -x ref=2:bframes=2:subq=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0 --verbose=1
    fi
done

Para responder às suas perguntas:

  1. Eu recomendaria apenas executar o script em um cronograma em vez de adicionar um software.
  2. Ou funcionará, o plano de fundo provavelmente é mais conveniente.
  3. Acho que é uma maneira de enfileirar arquivos, apenas o executo em série, ou seja, um de cada vez até que seja feito,
  4. Não, o Handbrake não exige que os arquivos sejam montados.
por 17.02.2014 / 21:39