Ffmpegについて

出典: 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にもいくつかの例がある。
