Ffmpegについて Hatena Bookmark

出典: Asterisk works Wiki

ffmpegとは動画や音声ファイルのフォーマット変換等に使われるオープンソースソフトウェアでLGPLまたはGPLで配布されている。

公式ページ:FFmpeg


目次

扱えるフォーマット

エンコード、デコードできるフォーマットは環境によって異なるので次のオプションで調べることができる

> ffmpeg -formats >formats.txt

例では出力をformats.txtという名前をつけてファイルに保存しているが、出力結果が大量のため一度ファイルに書き出した方が扱いやすい。

この出力はいくつかのパートに分かれているが、次の2つのパートが対応フォーマットを知るには必要。

  • File formats:
  • Codecs:

各行の先頭にはDEVSDTという記号でそのフォーマットへの対応状況が表示されている。

たとえば次のように

DEVSDT mpeg4

それぞれの意味は次の通り

Dデコード可能(変換元の入力ファイルとして利用可能)
Eエンコード可能(変換後の出力形式として指定可能)
Vビデオ(映像)
Aオーディオ(音声)
File formats:
Position 1: D = decoding
Position 2: E = encoding
Codecs:
Position 1: D = decoding
Position 2: E = encoding
Position 3: V = video codec -or- A = audio codec -or- S = subtitle codec
Position 4: S = draws horizontal band (can use the draw_horiz_band callback)
Position 5: D = uses direct rendering method 1 (DR1)
Position 6: T = truncated (input bitstream might be truncated at a
random location instead of at a frame boundary)

インストール

ffmpegはインストールするのが難しいソフトウェアである。いわゆるバイナリパッケージは公式には配布されていない。 代わりに公式サイトのGet FFmpegには次のように書かれている。

Get FFmpeg
FFmpeg has always been a very experimental and developer-driven project. It is a key component in many multimedia projects and has new features added constantly. New, official "releases" are few and far between. In short, if you want to work with FFmpeg, you are advised to go along with SVN development rather than relying on formal releases. SVN snapshots work really well 99% of the time so people are not afraid to use them. (FFmpegはずっととても実験的で開発者が引っ張ってきたプロジェクトである。多くのマルチメディアプロジェクトのキーコンポーネントであり、絶えず新機能が追加されている。新たな公式"リリース"はまれである。要するにFFmpegでやりたいことがあれば、公式リリースに期待するよりSVNから取ってくる方がいい。SVNのスナップショットは99%うまく動く。怖れずつかうといい。)

とはいえ、ソースコードからインストールするのはやはりそれなりのスキルが必要になる。

以下、各プラットフォームでの簡単なインストール方法をあげる。

Windows

携帯動画変換君という有名フリーウェアがあるが、この中にはffmpegが組み込まれている。

ダウンロードしたzipを解凍してできるディレクトリの中のcoresディレクトリの中にffmpeg.exeが入っている。これを使えばよい。

Linux

Linuxではyumやaptを使ってインストールするのが便利。

Redhat系ならyumを使えばよいが、CentOSのリポジトリには含まれていないのでそのままではインストールできないはRPMForgeのリポジトリを加えればyumでffmpegをインストールできる。

RPMforgeリポジトリをyumに加える方法は次のページに詳しく載っている。

CentOS の yum リポジトリに RPMforge リポジトリを追加する方法を紹介します。CentOS で構築する自宅サーバ : yum に RPMforge リポジトリを追加する

Ubuntu 8.10ではapt-getで簡単にインストールできる。

基本的な使い方

ffmpegコマンドは次のように使う

ffmpeg 入力オプション -i 入力ファイル名 出力オプション 出力ファイル名

例)VTS_01_1.mpgという名前のmpeg2ファイルをmpeg4に変換する

>ffmpeg -i VTS_01_1.mpg -vcodec mpeg4 -s 480x400 -r 30 -b 700k VTS_01_1.mp4

動画の情報を見る

> ffmpeg -i <入力ファイル名>

動画のサムネールを作る

>ffmpeg -vframes 1 -ss 10 -i <入力ファイル名> -f image2 <出力ファイル名>

静止画から動画を作る

事前準備
サイズはがすべておなじで、ファイル名が1から始まる規則的な数字連番を含む静止画を準備する (image0001.jpgや001.pngなど)

上記の準備

Avi動画にする

Motion JpegのAVI動画を作成するには次のコマンドを使う。実行するとout.aviという動画ファイルができる。ちなみにフレームレートは25fpsとなる。

>ffmpeg -i "./image-05d.jpg" -vcodec mjpeg -sameq out.avi 

パラメータの意味は次の通り。

パラメータ
意味
説明
-i
入力となる静止画を指定する。
動画を作るので複数の画像を入力する。連番になっている部分を%05dという風に指定する。%05dは「5桁の整数、0パディングあり」を表す。
-vcodec
コーデックを指定する。

例ではMotion Jpegを表すmjpegを指定している。

-sameq
素材と同じ画質を指定する


サイズを指定する

サイズを指定・変更するにはサイズを指定するためのオプション(-s)を追加する

>ffmpeg -i "c:\tmp\image%05d.jpg" -vcodec mjpeg -sameq -s 640x480 out.avi 

-s 640x480を出力先の前に追加することで、動画の画面サイズを640x480に変更できる。

フレームレートを変更する

静止画のスライドショーを作るならフレームレート25fpsは速すぎる。1秒に1枚表示する(1fps)にするには、-rオプションを使って次の様にする。

>ffmpeg -r 1 -i "./image-%05d.jpg" -vcodec mjpeg -sameq out.avi

フレームレートを1fps以下にすることも可能。-r 0.25とすると、1コマ(1静止画)を4秒づつ表示する。

参考ページ

その他、Wikipediaにもいくつかの例がある。

ffmpeg - Wikipedia

携帯動画変換君のffmpegコマンドオプション一覧

個人用ツール