LoginSignup
6
5

More than 5 years have passed since last update.

[zsh]動画のフォーマットを一括変換する短いワンライナー

Last updated at Posted at 2015-02-10

以下のワンライナーは、カレントディレクトリ以下のflvをmp4に一括変換します。
コードを短くするためにzshの機能を使っています。

for f (*.flv) ffmpeg -i $f:r{*,.mp4}

一般化した表現は以下のようになります。

CODEC_FROM=flv
CODEC_TO=mp4

for f (*.$CODEC_FROM) ffmpeg -i $f:r{*,.$CODEC_TO}

なぜ動くのか

  • for文とffmpegの組み合わせ
  • for name ... ( word ... ) sublistはzshの短縮for文
  • $val:rのように変数に:rを付加するとfilename($val)と同じ意味になる
  • グループ識別子の{}を使って部分的に異なる引数を記述している。通常ならffmpeg -i video.flv video.mp4と書くべきところをffmpeg -i video.{flv,mp4}と書くことが出来る。
  • 今回は最初にファイルを絞込んでおり、インプットする動画の拡張子は指定する必要が無いので、ワイルドカードを指定して記述を省略している。

変化形

カレントディレクトリに動画しか無い状況で、すべての動画のフォーマットを統一する

CODEC_TO=mp4
for f (*) ffmpeg -i $f:r{*,.$CODEC_TO}
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5