marc tech

株式会社MAISON MARCが運営するブログです。Tech Blogとは名ばかりの、採用・福利厚生の情報や、日々の活動記録(?)からエンジニアのくだらない小話までMAISON MARCに関する情報をお伝えするブログとなっています!興味のある方は是非ご覧になってください。

動画編集の頼れるソフト『ffmpeg』

皆さん、こんにちは。フロントエンドを担当しておりますセイです。


今回はフリーで利用することが出来て、動画や音声を自由に編集出来る、ffmpegという素晴らしいソフトウェアをご紹介したいと思います。


  1. ffmpegとは
  2. 導入方法
  3. サンプルコマンド



ffmpegとは

f:id:marctech:20170724110527p:plain:w600

FFmpeg(エフエフエムペグ)は動画と音声を変換することのできるUNIX系OS生まれのフリーソフトウェアであり、libavcodec(動画/音声のコーデックライブラリ)、libavformat(動画/音声のコンテナライブラリ)、libswscale(色空間・サイズ変換ライブラリ)、libavfilter(動画のフィルタリングライブラリ)などを含む。ライセンスはコンパイル時のオプションによりLGPLGPLに決定される。コマンドラインから使用することができる。対応コーデックが多く、多彩なオプションを使用可能なため、幅広く利用されている。

https://ja.wikipedia.org/wiki/FFmpeg



Macでいうターミナルや、Windowsでいうコマンドプロンプトなど、コマンドライン上で動かすことの出来るフリーの動画編集ソフトです。こちらを使用することでmp4をmovに、movをflvに、他にもmp4からmp3を作成したり、動画のファイルからgifファイルを作成したりなど、様々な便利な機能を使用することが出来ます。


導入方法


今回はMacでのhomebrewを使ったインストール方法を紹介します。

  1. Xcodeのインストー
  2. homebrewのインストー
  3. ffmpegのインストー

1.Xcodeのインストー

まずはXcodeをインストールしましょう。
XcodeApple社が提供している開発ツールです。


Xcodeの機能に含まれるCommand Line Toolsというものが以降のシステムのインストールに必要になります。

Xcode

Xcode

  • Apple
  • 開発ツール
  • 無料


※最新のものであれば問題はないですが、Xcodeのバージョンが6.1より前のものですとXcodeコマンドラインツールが自動インストールされていないので手動でインストールする必要があります。

2.homebrewのインストー

次はhomebrewというMac用のパッケージ管理ツールをインストールします。
homebrewはMacのソフトウェアのインストール、アンインストール、バージョンなどを管理するツールです。

Homebrew — macOS 用パッケージマネージャー


ターミナルを開き、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


  • フレームレートの指定

    -rfpsを指定。この場合は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



以上、導入から操作まで紹介させていただきました。


全てコマンドライン上で処理するので、ターミナルなど触れたことがない方には手を出し辛く感じるかと思いますが、フリーのソフトでこれだけのことが出来るので覚えておいて損はないと思います!


ではまた!