ffmpegはディレクトリ内のビデオを一括トランスコーディングします。

ffmpegはディレクトリ内のビデオを一括トランスコーディングします。

私は名前と拡張子が異なる多くのビデオを持っています(いくつかのmp4、いくつかのwmvなど)。

特定のディレクトリのすべてのビデオに対して以下のコマンドを実行し、元のファイルを上書きせずに別のディレクトリに保存したいと思います。

一部の動画は繰り返すことがあり、これが発生した場合はスクリプトを一時停止する必要があります。たとえば、video1.mp4video1.avi両方ともvideo1.mp4ではないため、/home/videos/processedスクリプトを一時停止する必要があります。

ffmpeg -i '/home/videos/unprocessed/vidabc.mp4' -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac -movflags +faststart '/home/videos/processed/vidabc.mp4'
ffmpeg -i '/home/videos/unprocessed/vidxyz.mp4' -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac -movflags +faststart '/home/videos/processed/vidxyz.mp4'

答え1

findフラグ付きのコマンドを使用して、ディレクトリ内の各ファイルを処理できます-execdir

例:

find /home/videos/unprocessed -type f \
   -execdir ffmpeg -i '{}' -f mp4 -vcodec libx264 -preset fast \
   -profile:v main -acodec aac -movflags +faststart '/home/videos/processed/{}.mp4' \;

-type fディレクトリ以外のファイルのみを検索することを示します。

フラグの後に-execdirこれ'{}'をファイルパスに置き換えます./vidabc.mp4

コマンドを終了するには、コマンドの最後に-execdiraを含めます。\;

この例で生成されたファイル名は次のとおりです。

  • /home/videos/processed/vidabc.mp4.mp4
  • /home/videos/processed/vidxyz.avi.mp4
  • /home/videos/processed/vidxyz.mp4.mp4

これが問題の場合は、これを解決する方法がいくつかあります。バラよりコマンド "find"-exec 置換文字列同様の例を見てください。

関連情報