動画編集の頼れるソフト『ffmpeg』
皆さん、こんにちは。フロントエンドを担当しておりますセイです。
今回はフリーで利用することが出来て、動画や音声を自由に編集出来る、ffmpegという素晴らしいソフトウェアをご紹介したいと思います。
- ffmpegとは
- 導入方法
- サンプルコマンド
ffmpegとは
FFmpeg(エフエフエムペグ)は動画と音声を変換することのできるUNIX系OS生まれのフリーソフトウェアであり、libavcodec(動画/音声のコーデックライブラリ)、libavformat(動画/音声のコンテナライブラリ)、libswscale(色空間・サイズ変換ライブラリ)、libavfilter(動画のフィルタリングライブラリ)などを含む。ライセンスはコンパイル時のオプションによりLGPLかGPLに決定される。コマンドラインから使用することができる。対応コーデックが多く、多彩なオプションを使用可能なため、幅広く利用されている。
https://ja.wikipedia.org/wiki/FFmpeg
Macでいうターミナルや、Windowsでいうコマンドプロンプトなど、コマンドライン上で動かすことの出来るフリーの動画編集ソフトです。こちらを使用することでmp4をmovに、movをflvに、他にもmp4からmp3を作成したり、動画のファイルからgifファイルを作成したりなど、様々な便利な機能を使用することが出来ます。
導入方法
今回はMacでのhomebrewを使ったインストール方法を紹介します。
1.Xcodeのインストール
まずはXcodeをインストールしましょう。
XcodeはApple社が提供している開発ツールです。
Xcodeの機能に含まれるCommand Line Toolsというものが以降のシステムのインストールに必要になります。
※最新のものであれば問題はないですが、Xcodeのバージョンが6.1より前のものですとXcodeコマンドラインツールが自動インストールされていないので手動でインストールする必要があります。
2.homebrewのインストール
次はhomebrewというMac用のパッケージ管理ツールをインストールします。
homebrewはMacのソフトウェアのインストール、アンインストール、バージョンなどを管理するツールです。
ターミナルを開き、homebrewのページに記載されている下記のスクリプトを貼り付け、実行してください。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
スクリプトを貼り付けて実行すると
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ==> This script will install: /usr/local/bin/brew /usr/local/share/doc/homebrew /usr/local/share/man/man1/brew.1 /usr/local/share/zsh/site-functions/_brew /usr/local/etc/bash_completion.d/brew /usr/local/Homebrew Press RETURN to continue or any other key to abort ==> /usr/bin/sudo /bin/mkdir -p /Library/Caches/Homebrew Password:
のように促されますのでMacのpasswordを入力してインストールを進めます。
インストールが終了した後、ターミナルに$ brew doctor
と入力してYour system is ready to brew.
と出れば完了です。
3.ffmpegのインストール
ターミルナルで$ brew install ffmpeg
実行します。
。。。これだけです笑
最後に$ ffmpeg -version
でバージョン情報が表示されればインストール完了です。
お疲れ様でした!
サンプルコマンド
ffmpegの基本的な使い方は
$ ffmpeg -i [入力ファイル名] ~~~変換オプション~~~ [出力ファイル名.変換したい拡張子]
です。.flvをmp4に変換するのであれば
$ ffmpeg -i input.flv out.mp4
になります。変換オプションに関しては
$ ffmpeg -h
と実行すると、どういった変換オプションが用意されているかが確認できます。.mp4ファイルから.mp3オーディオのみ取り出す
-acodec copy
で音声を再エンコードすることなく元データからコピーします。$ ffmpeg -i input.flv -acodec copy out.mp3
特定の時間帯を切り出す
-t
で秒数、-ss
は頭秒数。$ ffmpeg -ss 2 -i input.mp4 -t 10 out.mp4
アスペクト比を維持しながら画面サイズの指定
今回は横幅640で指定します。
$ ffmpeg -i input.mp4 -vf scale=640:-1 out.mp4
特定の画面の切り出し
x
が切り出しの横軸の始点、y
が縦軸の始点、w
で横幅、h
で縦幅を指定して切り出します。$ ffmpeg -i input.mp4 -vf crop=x=0:y=0:w=320:h=240 out.mp4
サムネイル画像作成
動画開始10秒後のところで画像を切り抜いています。
-f image2
で画像として出力すると宣言しており、-vframes
で何フレーム分切り出すか指定してます。$ ffmpeg -ss 10.0 -i input.mp4 -vframes 1 -f image2 out.png
-vframe 3
にして出力ファイル名に%02d
をつけると3フレーム分の画像をout01.png, out.02.pngのように連番で出力してくれます。$ ffmpeg -ss 10.0 -i input.mp4 -vframes 3 -f image2 out%02d.png
フレームレートの指定
-r
でfpsを指定。この場合は10fpsに指定。$ffmpeg -i input.mp4 -r 10 out.mp4
gif動画作成
$ffmpeg -i input.mp4 out.gif
でも作成出来るのですが、このまま作ると画質が汚いので使用する色を指定した中間ファイルを作りそれを元にエンコードします。
$ffmpeg -i input.mp4 -vf palettegen palette.png $ffmpeg -i input.mp4 -i palette.png -filter_complex paletteuse out.gif
以上、導入から操作まで紹介させていただきました。
全てコマンドライン上で処理するので、ターミナルなど触れたことがない方には手を出し辛く感じるかと思いますが、フリーのソフトでこれだけのことが出来るので覚えておいて損はないと思います!
ではまた!