web-dev-qa-db-ja.com

Handbrakeを自動化して、フォルダー内の新しいファイルを監視およびエンコードするにはどうすればよいですか?

これが私がWindows7でやりたいことです:

  1. 新しいISOファイル(Blu-ray ISO)がないかフォルダーを監視します。
  2. 新しいファイルが検出されたら、バックグラウンドでHandbrakeを起動し、品質/ファイル名/場所を保存する特定のプロファイルに基づいてISOをMKVにエンコードします(これにはISOのマウントが必要ですか?)
  3. ハンドブレーキがすでに操作を実行している場合は、検出された新しいISOを何らかのハンドブレーキキューに追加します。

どこから始めたらいいのか途方に暮れています。いくつかの質問:

  • 動作するVBScriptを起動するファイル監視ソフトウェアを入手する必要がありますか?
  • Handbrakeをバックグラウンドで、またはコンソール経由で起動して、やりたいことを実行できますか?
  • Handbrakeのキューに追加する方法、または少なくともジョブが終了したことを検出する方法はありますか?
  • 各ISOをマウントする必要がある場合、これを自動化するにはどうすればよいですか?

これを達成する方法についてのアイデアを探しています。

5
Ethan Allen

私はあなたが探しているようなことをしていました。これは、拡張子が.isoのすべてのファイルを検索する非常に基本的なループです。次に、それらを.mp4拡張子の付いたXbox360プリセットにエンコードします。そのファイルを.batとして保存すると、実行してファイルをエンコードできます。

@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

上記のスクリプトはM:\ encode \フォルダー内のすべてのファイルをエンコードするため、もう少しコードを追加する必要があることに注意してください。 1つのオプションは、ファイルがエンコードされたらそのディレクトリからファイルを移動することです。別のオプションは、ファイルがすでにエンコードされているかどうかを確認することです。

スクリプトを希望どおりに作成したら、設定した間隔でスクリプトを実行するようにWindowsスケジューラを設定できます。私は毎晩深夜に私のものを実行しますが、より速い結果が必要な場合は、10分ごとに実行することができます(エンコードに10分以上かかる場合は、映画のエンコードを2回目に開始しないようにしてください)。

それ以来、Linuxに切り替えましたが、Linuxスクリプトは、役立つと思われるロジックをもう少し使用しています。このスクリプトは、ファイルがすでにエンコードされているかどうかを確認し(存在する場合)、エンコードされている場合はスキップします。調査なしでこのロジックを書くのにBatchが得意ではないのではないかと思いますが、それは可能だと思います。

#### 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

あなたの質問に答えるには:

  1. ソフトウェアを追加するのではなく、スケジュールに従ってスクリプトを実行することをお勧めします。
  2. どちらでも機能しますが、背景がおそらく最も便利です。
  3. それらはファイルをキューに入れる方法だと思います。私はそれをシリアルに実行します。つまり、完了するまで一度に1つずつ実行します。
  4. いいえ、ハンドブレーキではファイルをマウントする必要はありません。
2
tbenz9