私は名前と拡張子が異なる多くのビデオを持っています(いくつかのmp4、いくつかのwmvなど)。
特定のディレクトリのすべてのビデオに対して以下のコマンドを実行し、元のファイルを上書きせずに別のディレクトリに保存したいと思います。
一部の動画は繰り返すことがあり、これが発生した場合はスクリプトを一時停止する必要があります。たとえば、video1.mp4
&video1.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
。
コマンドを終了するには、コマンドの最後に-execdir
aを含めます。\;
この例で生成されたファイル名は次のとおりです。
/home/videos/processed/vidabc.mp4.mp4
/home/videos/processed/vidxyz.avi.mp4
/home/videos/processed/vidxyz.mp4.mp4
これが問題の場合は、これを解決する方法がいくつかあります。バラよりコマンド "find"-exec 置換文字列同様の例を見てください。