ffmpeg
出典: フリー百科事典『ウィキペディア(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])などのデバイスにも利用されている。
目次 |
サポートしている形式
- ASF
- AVI
- Matroska
- NUT
- FLV
- WAV
- QuickTime
- 3GPP
- MPEG-1
- MPEG-2
- MPEG-4
- SMAF(MMF)
- OpenMG
- TwinVQ
- Ogg/FLAC
- Monkey's Audio
- WavPack
- TTA
サポートしている画像形式
サポートしているコーデック
libavcodecを参照。
サポートしているプロトコル
- TCP
- UDP
- HTTP
- RTP
- RTSP
- RealMedia RTSP/RDT
- RTMP
- RTMPT, RTMPE, RTMPTE, RTMPS (librtmp経由)
- SDP
- Gopher
- MMS over TCP
サポートしているデバイス
- Unix
- Windows
- VfWキャプチャ
- その他
オプション
FFmpegでは数多くのオプションを利用することができる。それらはffmpegのバージョンによって差異があるため、利用前にオプションやコーデックの表記を確認することが望ましい。オプションは ffmpeg -h
で表示できる。また、コーデック名等は ffmpeg -formats
や ffmpeg -codecs
で表示できる。( コーデック名は下記注意事項参照 )
一般的なオプション等の例を以下に挙げる。
メインオプション
- -i 入力ファイル名を設定する。
- -f 出力フォーマットの指定。
- -y 出力するファイル名と同じ名前のファイルが出力先にある場合に上書する。
- -fs 指定したファイルサイズになったら変換を終了する。
- -ss 指定した時間から変換を開始する。
- -title タイトルを設定する。
- -timestamp タイムスタンプを設定する。
- -vsync フレームをカットしたり加えたりして音声に動画を同期させる。
ビデオオプション
- -b 動画部分のビットレートを設定、初期設定は200kbps。( 単位は下記注意事項参照 )
- -r フレームレートの設定 初期設定は25
- -s 動画のサイズを横×縦で設定
- -aspect アスペクト比の設定
- -vn ビデオを無効にする。音声部分のみのエンコードなどに使用する。
- -vcodec ビデオコーデックを設定 設定しない場合は入力ファイルと同じコーデックを使用する。
オーディオオプション
- -ab チャンネルごと(最近のSVN版では全チャンネル合計)のビットレートを設定する。( 単位は下記注意事項参照 )
- -ar サンプリング周波数を設定する。
- -ac 音声のチャンネル数を設定する。
- -acodec 音声コーデックを設定する。設定しない場合は動画同様入力されたファイルと同じコーデックを使用する。
- -an 音声を無効にする。ビデオ部分のみのエンコードなどに使用する。
- -vol 通常の音量を256として音量を設定する。(2倍の音量にしたい時は512を指定する。)
注意事項
- -bや-abオプションでビットレートを指定する場合、ffmpegのバージョンによってkbpsの場合と、bpsの場合があるので注意が必要である。(ffmpeg -hでヘルプメッセージを表示させて単位を確認するとよい)
- たとえば、単位がbpsの場合で64kbpsのビットレートを指定する場合は『 -ab 64k 』と指定し、単位がkbpsの場合は『 -ab 64 』と指定する。ビットレートの計算では一般的にk=1000であり1024ではない。
- -acodecや-vcodecで指定するコーデック名は、ffmpegのバージョンによって違うことがある。たとえば、AACコーデックの場合、aacと指定する場合と、libfaacと指定する場合がある。また、デコードのみやエンコードのみできるコーデックもあるため、必ず
ffmpeg -formats
やffmpeg -codecs
で指定するコーデックが機能するか確認すべきである。
使用例
- ヘルプの表示
ffmpeg -h
- 対応形式の確認
# ファイル形式 (コンテナ/フォーマット/スプリッター) ffmpeg -formats # コーデック形式 (映像や音声の形式/圧縮アルゴリズム) ffmpeg -codecs # プロトコル形式 (スキーマも含む) ffmpeg -protocols
- 動画をMPEG-4/AVC形式に変換する例 (ビットレート固定)
ffmpeg -i inputfile -f mp4 -vcodec libx264 -acodec libfaac -vb 256k -ab 64k outputfile.mp4 # -f の後に変換後のファイル形式、-acodec の後に変換後の音声コーデック、-vcodec の後に変換後の動画コーデックを指定する。 # -vb は変換後の映像のビットレート(ビット/秒)、-ab は変換後の音声のビットレート(ビット/秒)を指定する。
- 動画をMPEG-4/AVC形式に変換する例 (品質固定)
ffmpeg -i inputfile -f mp4 -vcodec libx264 -acodec libfaac -cqp 23 -aq 100 outputfile.mp4 # ビットレートを指定する代わりに品質を指定することができる。映像は cqp 、音楽は aq となる。 # 品質指定は cqp の場合、値が小さいほど品質が高いことを意味する。aq の場合、値が大きいほど品質が高いことを意味する。 # 値の意味は変換後のコーデックによるので注意。
- 音楽をAACに変換する例
ffmpeg -i inputfile -f aac -vn -acodec libfaac -ab 128k outputfile.aac # -vcodec の代わりに -vn を使うことで変換後に映像を入れないという意味になる。同様に、-acodec の代わりに -an を使うことで音声を消すことも可能である。
- MP4形式の動画から再エンコード無しでFLV形式に変換する例
ffmpeg -i inputfile.mp4 -vcodec copy -acodec copy outputfile.flv # 変換後のフォーマットによっては、そのフォーマットの仕様の制限やFFmpegが未対応であることなどにより変換前のコーデックが入れられないことがある。 # また、-vcodec copy を -vn にすることによって、再エンコード無しで音楽だけにすることが出来る。
- RTSPサーバーからMP4動画を保存する例
ffmpeg -i rtsp://example.com/inputfile.mp4 -vcodec copy -acodec copy -scodec copy outputfile.mp4 # 入力ファイルに直接URLを入れることができる。
- RTSPサーバーに動画を送信する例
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
- DVDのVOBファイルを、VideoCD形式のMPEG-1ファイルに変換する例
ffmpeg -i inputfile.vob -f mpeg -vcodec mpeg1video -acodec mp2 -vb 1152k -ab 128k -s 352x240 outputfile.mpg
- 動画を東芝のREGZAが認識できるMPEG2形式に変換する例
ffmpeg -i inputfile -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg
- 複数のAVIの動画ファイルを結合する例(この例では、中間処理として、一度AVIファイルをMPEG-1ファイルに変換する必要がある(MPEG-1, MPEG-2 PS, DVも連結可能))
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)に含まれるものを用いるか、コンパイル済みのバイナリを配布しているサイトからダウンロードする。
- Apple OSX
FFMPEGX [6]
FFmpegを利用・サポートしているアプリケーション
- エンコーダ
- MEncoder
- HandBrake
- MediaCoder
- 動画再生
- コーデック
- ffdshow
- GStreamer FFmpeg plug-in
- Perian
- Bellagio OpenMAX IL - STマイクロエレクトロニクスとノキアによって開発されているオープンソースのOpenMax IL実装
- 3D描画
- マルチメディアプレーヤ
- 動画編集
- 音声編集
- Audacity(1.3.6以降)
- VoIP
- 構内交換機 (PBX)
- 画像処理
- OpenCV - インテルによって開発されたコンピュータビジョン向けライブラリ。
- ImageMagick - MPEG-2へ出力する際に使用する。
- ブラウザ
- Google Chrome[6] - HTML5のvideoタグに使用している。また、Chromeをベースにしたメディアプレイヤーを作るという計画がある。
- 動画処理
音ズレ問題
音ズレの原因は大きく分けて以下がある。
- フレームレート
- 復号タイムスタンプ(DTS)/表示タイムスタンプ(PTS)
- A/V Sync
- ディレイ
FFmpegにおいては、フレームレートは内部的に分数を用いて処理をしているためフレームレートによる音ズレが起こることは少ない。ただし小数でフレームレートを保存するコンテナも存在するため、限界もある。FFmpegのライブラリを使用する場合に、分数を小数に直してから処理すると音ズレを起こす場合がある。
コンテナの実装においてDTSをPTSに又はDTSにPTSを代入した場合や、FFmpegのライブラリを利用したアプリケーションにおいてPTSとDTSを正しく扱わなかった場合などに音ズレを伴う問題が起きる場合がある。また、負のPTSや負のDTSを使用している場合において問題が起きる場合がある。
ディレイの問題は、遅延フレーム、エンコードに必要な無音区間の挿入、デコードに必要的に出力される無音サンプルなどによって起こる。一部のコンテナやその実装においては、ディレイはタグなどのメタデータによって打ち消す。コンテナがディレイを打ち消す方法を提供しない場合は、映像/音声データの方を調節するしかない。一部独自拡張のタグにディレイ情報を埋め込むエンコーダ(LAMEのLAMEタグやiTunesのiTunSMPBなど)も存在し、様々なソフトウェア・ハードウェアが相性問題を抱えている。FFmpegはこれらの幾つかにまだ対応していない。
また、変換前の動画を出力したソフトウェア・ハードウェアや変換後の動画を処理するソフトウェア・ハードウェアのバグや仕様によって問題が起こることも多い。変換前の動画にバグがある場合、-bugオプションを使って回避できる場合がある。
関連項目
外部リンク
出典
FFmpeg
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/13 06:20 UTC 版)
![]() | |
![]() Linux で動作中の FFmpeg | |
作者 | Fabrice Bellard |
---|---|
開発元 | FFmpegチーム |
初版 | 2000年12月20日[1] |
最新版 |
7.1.1[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を参照。
サポートしているプロトコル
- TCP
- UDP
- HTTP
- RTP
- RTSP
- RealMedia RTSP/RDT
- RTMP
- RTMPT, RTMPE, RTMPTE, RTMPS (librtmp経由)
- SDP
- Gopher
- MMS over TCP
サポートしている入出力デバイス
- Unix
- Windows
- VfWキャプチャ
入手方法
公式サイトでは、コンパイル済みのバイナリは配布されていないため、自分の環境に合わせてソースコードをコンパイルすることもできるが、コンパイル済みのバイナリを配布する非公式のサイト等も存在している。
FFmpegを利用・サポートしているアプリケーション
- エンコーダ
- MEncoder
- HandBrake
- MediaCoder
- 携帯動画変換君
- WinFF
- コーデック
- ffdshow
- GStreamer FFmpeg plug-in
- Perian
- Bellagio OpenMAX IL - STマイクロエレクトロニクスとノキアによって開発されているオープンソースのOpenMax IL実装
- FFmpegInterop - Microsoftによって開発されているMediaStreamSource実装
- 3D描画
- マルチメディアプレーヤ
- MPlayer
- VLC
- Xine
- Gnash - オープンソースのフラッシュプレーヤー
- swfdec - オープンソースのフラッシュプレーヤー
- Moonlight - マイクロソフトが支援してノベルが開発するオープンソースのSilverlight代替実装
- 動画編集
- 音声編集
- Audacity (1.3.6以降)
- ラジ録12 Windows版
- VoIP
- 構内交換機 (PBX)
- 画像処理
- OpenCV - インテルによって開発されたコンピュータビジョン向けライブラリ。
- ImageMagick - MPEG-2へ出力する際に使用する。
- ウェブブラウザ
- Google Chrome[12] - HTML5のvideoタグに使用している。また、Chromeをベースにしたメディアプレイヤーを作るという計画がある。
- 動画処理
- ラッパー
FFmpegに含まれるライブラリ群は多数のマルチメディアアプリケーションにより利用されている。また、Palmのスマートフォン (Palm WebOS[15]) やソニーのブルーレイプレーヤ (BDP-S1[16]、BDP-S1E/BDP-S300/BDP-S280[17]、BDP-S500/BDP-S2000ES[18]) などのデバイスにも利用されている。
出典
- ^ “Initial revision - git.videolan.org/ffmpeg.git/commit”. git.videolan.org (2000年12月20日). 2013年12月25日時点のオリジナルよりアーカイブ。2013年5月11日閲覧。
- ^ “[FFmpeg-devel Point releases]” (3 3月 2025). 3 3月 2025閲覧。
- ^ “Developer Documentation”. ffmpeg.org (2011年12月8日). 2012年1月4日閲覧。
- ^ “Download”. ffmpeg.org. FFmpeg. 2012年1月4日閲覧。
- ^ オプションの外部ライブラリであるNVIDIA Performance Primitivesはプロプライエタリなソフトウェアであり、GPLの条件に基づいて配布することができないため
- ^ A complete, cross-platform solution to record, convert and stream audio and video.> http://www.ffmpeg.org/
- ^ Bellard, Fabrice (18 February 2006). "FFmpeg naming and logo". Ffmpeg-devel (Mailing list) (英語). 2025年3月13日閲覧。
- ^ transition: Libav 0.7
- ^ Ubuntu Release Management: Transition: "libav"
- ^ “Why Debian returned to FFmpeg [LWN.net]”. 2015年12月12日閲覧。
- ^ FFmpeg 5.0 release
- ^ whatwg MPEG-1 subset proposal for HTML5 video codec
- ^ Research White Paper - WHP 155
- ^ BBC R&D - Automated tapeless production - home page
- ^ Open Source Packages
- ^ Model/Module : BDP-S1
- ^ Model/Module : BDP-S1E/BDP-S300/BDP-S280
- ^ Model/Module : BDP-S500/BDP-S2000ES
関連項目
外部リンク
固有名詞の分類
- ffmpegのページへのリンク