フォルダーに多くのビデオがあり、1つのコマンドですべてを圧縮したい。
私が使用する1つのビデオを圧縮するには:
Sudo apt-get install ffmpeg
ffmpeg -i input.mp4 output.mp4
しかし、圧縮したいビデオがたくさんある場合はどうなりますか?私は以下を試しました:
ffmpeg -i ./videos ./compressed-videos
しかし、それから私はこのエラーを受け取ります:
./videos: Is a directory
私はこの目的のためにbash for
ループを使用します-_videos/
_および_compressed/
_ディレクトリを含む親ディレクトリにいるとします。
_for f in videos/*mp4; do ffmpeg -i "$f" "compressed/${f##*/}"; done
_
または、任意のタイプのビデオファイルをmkvに変換する場合は、次を使用できます。
_for f in videos/*; do ffmpeg -i "$f" "compressed/$(basename "${f%.*}").mkv"; done
_
上記の例では:
${var##*/}
_は、最後のスラッシュ_/
_以降のすべての文字を出力するため、パスのないファイル名のみが残ります。${f%.*}
_は最後のドットの前のすべての文字を出力するため、パスとファイル名は保持されますが、ファイル拡張子は削除されます。次に、コマンド置換$(basename "/path/name")
は、パスなしで名前のみを出力します。参照: