出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/10/10 23:57 UTC 版)
| |
|
|
Linux で動作中の FFmpeg
|
|
| 作者 | Fabrice Bellard |
|---|---|
| 開発元 | FFmpegチーム |
| 初版 | 2000年12月20日[1] |
| 最新版 | 8.0[2] |
| リポジトリ | |
| プログラミング 言語 |
C言語、アセンブリ言語[3] |
| 対応OS | Windows、macOS、Linux(その他各OS向けにコンパイル可能)[4] |
| プラットフォーム | x86、ARM、PowerPC、MIPS、DEC Alpha、Blackfin、AVR32、SH-4、SPARC(その他各デスクトップPC向けにコンパイル可能) |
| サポート状況 | 活発 |
| 種別 | マルチメディアフレームワーク |
| ライセンス | LGPL 2.1+, GPL 2+ NVIDIA Performance Primitivesでコンパイルした場合は再頒布不可[5] |
| 公式サイト | ffmpeg |
FFmpeg(エフエフエムペグ)は動画と音声を記録・変換・再生するための自由ソフトウェアである[6]。Unix系オペレーティングシステム (OS) 生まれであるが現在ではクロスプラットフォームであり、libavcodec(動画/音声のコーデックライブラリ)、libavformat(動画/音声のコンテナライブラリ)、libswscale(色空間・サイズ変換ライブラリ)、libavfilter(動画のフィルタリングライブラリ)などを含む。ライセンスはコンパイル時のオプションによりLGPLかGPLに決定される。コマンドラインから使用することができる。対応コーデックが多く、多彩なオプションを使用可能なため、幅広く利用されている。
名前の「FF」はFast Forward(早送り)を意味する[7]。
FFmpegは、単体ではGUIを持たないツールでUNIXコマンドのように振る舞う。その為、対話式アプリケーションとして使用される場合、フロントエンドを用いる事も多い。コマンドラインから実行するCUIとして配布されているのは、ユーザが必要とすればフロントエンドを利用でき、スクリプトなどのバッチ処理を行う際に呼び出す事もできるという利点からである。また、FFserverと組み合わせる事により、ファイルシステムやデバイスファイルとストリーミングサーバ間のフィルタとしても動作する。
2011年3月13日にFFmpegの開発は、開発体制の対立からffmpeg.orgとlibav.orgに分裂した。どちらもffmpegというソフトウェアをリリースしているが、Libav側はavconvに名称を切り替える作業を進めている。この分裂に伴い、Debian[8]、Ubuntu[9] 11.04、Gentoo LinuxはLibav側を採用した。
2015年7月にDebianはセキュリティ問題への対応姿勢からLibavを排除し、FFmpeg採用に戻った。UbuntuもFFmpeg採用に戻っている[10]。
2022年1月17日に大きなAPIの変更と非推奨APIの削除が行われたFFmpeg 5.0がリリースされた[11]。
|
|
|
|
|
|
|
|
libavcodecを参照。
公式サイトでは、コンパイル済みのバイナリは配布されていないため、自分の環境に合わせてソースコードをコンパイルすることもできるが、コンパイル済みのバイナリを配布する非公式のサイト等も存在している。
FFmpegに含まれるライブラリ群は多数のマルチメディアアプリケーションにより利用されている。また、Palmのスマートフォン (Palm WebOS[15]) やソニーのブルーレイプレーヤ (BDP-S1[16]、BDP-S1E/BDP-S300/BDP-S280[17]、BDP-S500/BDP-S2000ES[18]) などのデバイスにも利用されている。
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2011/05/09 16:35 UTC 版)
| 開発元 | FFmpegチーム |
|---|---|
| 最新版 | 0.6.3[1](2011年4月26日) |
| プログラミング言語 | C言語 |
| 対応OS | クロスプラットフォーム |
| サポート状況 | 活発 |
| 種別 | マルチメディアフレームワーク |
| ライセンス | LGPL |
| 公式サイト | ffmpeg.org |
FFmpeg(エフエフエムペグ)は動画と音声を変換することのできるフリーソフトウェアであり、libavcodec(動画/音声のコーデックライブラリ)、libavformat(動画/音声のコンテナライブラリ)、libswscale(色空間・サイズ変換ライブラリ)、libavfilter(動画のフィルタリングライブラリ)などを含む。ライセンスはコンパイル時のオプションによりLGPLかGPLに決定される。
携帯動画変換君、WinFFなどのソフトウェア(GUIラッパー)や、WindowsやLinuxのコマンドラインから使用することができる。 対応コーデックが多く、多彩なオプションを使用可能なため、幅広く利用されている。
FFmpegに含まれるライブラリ群は多数のマルチメディアアプリケーションにより利用されている。また、Palmのスマートフォン(Palm WebOS[2])やソニーのブルーレイプレーヤ(BDP-S1[3]、BDP-S1E/BDP-S300/BDP-S280[4]、BDP-S500/BDP-S2000ES[5])などのデバイスにも利用されている。
目次 |
libavcodecを参照。
FFmpegでは数多くのオプションを利用することができる。それらはffmpegのバージョンによって差異があるため、利用前にオプションやコーデックの表記を確認することが望ましい。オプションは ffmpeg -h で表示できる。また、コーデック名等は ffmpeg -formats や ffmpeg -codecs で表示できる。( コーデック名は下記注意事項参照 )
一般的なオプション等の例を以下に挙げる。
ffmpeg -formats や ffmpeg -codecs で指定するコーデックが機能するか確認すべきである。ffmpeg -h
# ファイル形式 (コンテナ/フォーマット/スプリッター) ffmpeg -formats # コーデック形式 (映像や音声の形式/圧縮アルゴリズム) ffmpeg -codecs # プロトコル形式 (スキーマも含む) ffmpeg -protocols
ffmpeg -i inputfile -f mp4 -vcodec libx264 -acodec libfaac -vb 256k -ab 64k outputfile.mp4 # -f の後に変換後のファイル形式、-acodec の後に変換後の音声コーデック、-vcodec の後に変換後の動画コーデックを指定する。 # -vb は変換後の映像のビットレート(ビット/秒)、-ab は変換後の音声のビットレート(ビット/秒)を指定する。
ffmpeg -i inputfile -f mp4 -vcodec libx264 -acodec libfaac -cqp 23 -aq 100 outputfile.mp4 # ビットレートを指定する代わりに品質を指定することができる。映像は cqp 、音楽は aq となる。 # 品質指定は cqp の場合、値が小さいほど品質が高いことを意味する。aq の場合、値が大きいほど品質が高いことを意味する。 # 値の意味は変換後のコーデックによるので注意。
ffmpeg -i inputfile -f aac -vn -acodec libfaac -ab 128k outputfile.aac # -vcodec の代わりに -vn を使うことで変換後に映像を入れないという意味になる。同様に、-acodec の代わりに -an を使うことで音声を消すことも可能である。
ffmpeg -i inputfile.mp4 -vcodec copy -acodec copy outputfile.flv # 変換後のフォーマットによっては、そのフォーマットの仕様の制限やFFmpegが未対応であることなどにより変換前のコーデックが入れられないことがある。 # また、-vcodec copy を -vn にすることによって、再エンコード無しで音楽だけにすることが出来る。
ffmpeg -i rtsp://example.com/inputfile.mp4 -vcodec copy -acodec copy -scodec copy outputfile.mp4 # 入力ファイルに直接URLを入れることができる。
ffmpeg -re -i inputfile -f rtsp -vcodec libx264 -acodec libfaac -vb 256k -ab 64k rtsp://example.com/outputfile.mp4 # 出力ファイルにも直接URLを入れることができる。-re を付けると出力速度がリアルタイムになるように調整する。
# ffserver.conf を適切に編集してから以下を実行。 ffserver & ffmpeg -i inputfile http://127.0.0.1:8090/feed.ffm
ffmpeg -i inputfile.vob -f mpeg -vcodec mpeg1video -acodec mp2 -vb 1152k -ab 128k -s 352x240 outputfile.mpg
ffmpeg -i inputfile -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg
ffmpeg -i input1.avi -sameq inputfile_01.mpg ffmpeg -i input2.avi -sameq inputfile_02.mpg cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg ffmpeg -i inputfile_all.mpg -sameq outputfile.avi
なお、concatスキーマ(concat:input.avi.part1|input.avi.part2)はストリームの物理的な結合のみ行うため、この場合は使えない。
公式サイトでは、コンパイル済みのバイナリは配布されていないため、通常は自分の環境に合わせてソースコードをコンパイルするが、 次のような手法でバイナリを入手することもできる。
RPMForge[1]、Livna[2]等のリポジトリを用いて、yumコマンド等でインストールできる
yum --enablerepo=rpmforge install ffmpeg
apt-getコマンドを用いて、ディストリビュージョンのリポジトリに含まれているパッケージからインストールする
apt-get install ffmpeg
portsツリーに含まれており、該当ディレクトリに移動してmake installするかpkg_addコマンドでバイナリパッケージを導入する。
公式サイトで紹介されているffmpegを用いたプロジェクト([Projects Using FFmpeg)に含まれるものを用いるか、コンパイル済みのバイナリを配布しているサイトからダウンロードする。
FFMPEGX [6]
音ズレの原因は大きく分けて以下がある。
FFmpegにおいては、フレームレートは内部的に分数を用いて処理をしているためフレームレートによる音ズレが起こることは少ない。ただし小数でフレームレートを保存するコンテナも存在するため、限界もある。FFmpegのライブラリを使用する場合に、分数を小数に直してから処理すると音ズレを起こす場合がある。
コンテナの実装においてDTSをPTSに又はDTSにPTSを代入した場合や、FFmpegのライブラリを利用したアプリケーションにおいてPTSとDTSを正しく扱わなかった場合などに音ズレを伴う問題が起きる場合がある。また、負のPTSや負のDTSを使用している場合において問題が起きる場合がある。
ディレイの問題は、遅延フレーム、エンコードに必要な無音区間の挿入、デコードに必要的に出力される無音サンプルなどによって起こる。一部のコンテナやその実装においては、ディレイはタグなどのメタデータによって打ち消す。コンテナがディレイを打ち消す方法を提供しない場合は、映像/音声データの方を調節するしかない。一部独自拡張のタグにディレイ情報を埋め込むエンコーダ(LAMEのLAMEタグやiTunesのiTunSMPBなど)も存在し、様々なソフトウェア・ハードウェアが相性問題を抱えている。FFmpegはこれらの幾つかにまだ対応していない。
また、変換前の動画を出力したソフトウェア・ハードウェアや変換後の動画を処理するソフトウェア・ハードウェアのバグや仕様によって問題が起こることも多い。変換前の動画にバグがある場合、-bugオプションを使って回避できる場合がある。
固有名詞の分類