動画を扱っている人、特にエンコードする人にお馴染みの
"FFmpeg"がメジャーアップデートされ バージョン"3.0"がリリースされました。

ffmpegは動画や音声の変換が出来る人気のフリーソフトウェアで、
デスクトップ・アプリケーションからサーバーサイドまで幅広く使われています。
( Windows, Mac, Linux等、クロスプラットフォームで動きます)

バージョンアップに伴い、多数の新機能が追加されましたが
その中の1つに”VP9 *HTML5 Video (WebM)”形式の
ハードウェア・アクセラレーションもサポートされました。

# FFmpeg change logから (Version 3.0)
- DXVA2-accelerated VP9 decoding
- VAAPI VP9 hwaccel


WebMはGoogleが開発しているオープンソースの動画フォーマットで
軽量で高品質”を目標とし、Flashに置き換わる動画形式と注目されています。

"WebMとは一体どれぐらい軽量なんぞ !?"
っということで実際にFFmpeg 3.0を導入して試してみました。
( Mac OSX を元に行いましたが、Linux上でもhomebrew部分を除けば手順は同じです )
 

FFmpegのインストール

執筆時(2016 / 2/16)にはhomebrew上でFFmpegの3.0が公開されていなかったので
コマンドライン上で行い、ソースコードのコンパイルから始めます。

まず、FFmpegに依存するライブラリとVP9を使えるようにするため
下記のライブラリをインストールします。

# "yasm"と"libvpx"の導入
brew install yasm && brew install libvpx


次にソースコードの入手です。
wgetコマンドを使ってFFmpegのサイトから3.0をダウンロードしました。

# wgetが無い人は 'brew install wget'で導入できます
wget https://www.ffmpeg.org/releases/ffmpeg-3.0.tar.gz

# ffmpegの解凍
tar xzvf ffmpeg-3.0.tar.gz

# ディレクトリの移動
cd ffmpeg-3.0


続いて、ソースのコンパイルです。
ここで最初にインストールした"libvpx"をFFmpeg上で使えるようにしています。

"configure --enable-libvpx"に注意してください。

# vp9を使えるようにするためlibvpxを有効化
./configure --enable-libvpx

# make
make

# これでインストールされます
make install


以上で導入は完了。

コマンドライン上で "ffmpeg"とタイプし、
下記のように表示されれば問題なくインストールされています。

$ ffmpeg
ffmpeg version 3.0 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 7.0.2 (clang-700.1.81)
  configuration: --enable-libvpx
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'


FFmpegでmp4ファイルをWebM形式にエンコード

それではWebM形式へのエンコードへ移りましょう!

元になるファイルとして、18.6MBのmp4形式の動画を用意しました。

* サムネイルでは真っ暗ですが、映像も入っています

ffmpegコマンドを使って"input.mp4"を"output.webm"というWebM形式の動画に変換します。

ffmpeg -i input.mp4 -strict -2 -vcodec libvpx-vp9 out.webm


時間を掛けてエンコードした結果 ...

ジャン!

18.6MB -> 4.5MB (約41.3%) までファイルサイズが下がりました!

映像をお見せできないのが残念ですが、
オリジナルのmp4形式の動画と全くと言っていい程、変わりません!

また、毎回コマンドを打つのが面倒だという人は下記の様なスクリプトを作っておいて".bashrc"のエイリアス内にカスタムコマンドとして登録しておくのもいいかもしれませんね。

# rubyを使ったスクリプトの一例 webMconvert.rb

# file should be executable * chmod +x webmConverter.rb

require 'colorize' # gem install colorize

dir = Dir.pwd
file = ARGV[0]

message = {
  "empty" => "Error: argument is empty".red,
  "not_mp4" => "Error: a file must be 'mp4' file.".red,
  "not_exist" => "Error: a file not exist your directory.".red,
  "error" => "Error: some problem occured.".red,
  "success" => "Success: your file is converted!!".green
}
# convert function
def webm_converter(dir, file)

  return system("ffmpeg -i #{dir}/#{file} -strict -2 -vcodec libvpx-vp9 #{dir}/o-#{file}")

end


if file.nil?
  puts message["empty"]

elsif file.end_with?(".mp4") == false
  puts message["not_mp4"]

elsif File.exist?(dir.concat("/#{file}"))
  puts message["not_exist"]

else
  puts webm_converter(dir, file) == true ? message['success'] : message['error']

end

exit



Summary

今回はWebM動画へのエンコードに重点を起きましたが、
FFmpegを使えば、ほぼ全ての動画、画像、音声形式の変換が可能です。

例えば、"MP4 -> AVI", "MPEG2 -> mp4" 考えられることは全て出来ます!

また、GPUアクセラレーションを使ってエンコード、デコードを高速化することも。
( FFmpeg GPU オプションのページ )

オプションが沢山あり過ぎて、使いこなすのには慣れが必要ですが
マスターすればこの上なく役立つこと間違いないです。

FFmpeg

 

この記事のカテゴリ

PC・MAC

この記事のタグ

ソフトウェア , Macintosh , 開発ツール

Socialシェアボタン

スポンサーリンク