FFmpeg

 
 

オープンソースマルチメディア処理フレームワーク

FFmpeg APIを使用してオーディオおよびビデオファイルをエンコード、デコード、トランスコード、ストリーム、変換します。

FFmpegとは何ですか?

FFmpegは、開発者が音声および動画コンテンツを録画、変換、ストリーミングできるようにする、主要なオープンソースマルチメディアフレームワークです。libavcodec、libavformat、libavutil、libavfilter、libswscale、libswresampleなどの包括的なライブラリセットを含み、多様なマルチメディアタスクを処理するための強力なツールを提供します。数百ものコーデックとフォーマットをサポートし、FFmpegは動画編集ソフトウェアからストリーミングサーバー、メディアプレーヤーに至るまで、数多くのアプリケーションに利用されています。

FFmpegは、その柔軟性、パフォーマンス、活発なコミュニティサポートにより、さまざまな業界で広く採用されています。シンプルなフォーマット変換から複雑な動画フィルタリングやリアルタイムストリーミングまで、あらゆる処理を行います。メディアサーバー、デスクトッププレーヤー、クラウドベースのトランスコーディングパイプラインを構築する場合でも、FFmpegは信頼性の高い高品質な処理機能を提供します。ffmpeg、ffplay、ffprobeといったコマンドラインツールは、スクリプトや自動化ワークフローへの統合を容易にし、C APIやPython向けバインディングなどのプログラムからの深い制御も可能にします。

Previous Next

FFmpegのはじめ方

FFmpeg の使用を開始するには、システムのパッケージマネージャーでインストールします(例: Ubuntu の場合は `apt install ffmpeg`、macOS の場合は `brew install ffmpeg`)。または公式サイトから事前ビルド済みバイナリをダウンロードしてください。プログラムから利用する場合は、`pip install ffmpeg-python` で Python ラッパーをインストールするか、公式の C ライブラリヘッダーを使用します。FFmpeg は GitHub の [FFmpeg GitHub](https://github.com/FFmpeg/FFmpeg) でも入手でき、カスタム設定のためにソースからビルドすることが可能です。その軽量なフットプリントとクロスプラットフォーム対応により、デスクトップ、サーバー、組み込み環境での展開に最適です。

パッケージマネージャーでFFmpegをインストールする

# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg

# macOS (Homebrew)
brew install ffmpeg

# Python wrapper
pip install ffmpeg-python

メディアをフォーマット間で変換する

FFmpegは、数百のフォーマットとコーデック間でメディアファイルを変換することに優れています。MP4からWebMへのビデオのトランスコード、ビデオファイルからのオーディオ抽出、または再エンコードせずに(ストリームコピーで)コンテナ形式を変更することができます。そのインテリジェントなデフォルト設定は高品質を保証し、詳細なオプションではビットレート、解像度、フレームレート、コーデックパラメータを微調整できます。ウェブストリーミング、アーカイブ、特定デバイスでの再生のためにコンテンツを準備する場合でも、FFmpegは出力品質と互換性を正確にコントロールします。コマンドラインインターフェースは、変換中にリサイズ、クロップ、エフェクト適用のための複雑なフィルタチェーンをサポートしています。

FFmpegでMP4をWebMに変換する方法は?

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm

リアルタイムストリーミングとライブ放送

FFmpegは、RTMP、HLS、SRTなどのプロトコルを使用したライブメディアの取り込み、トランスコーディング、ストリーミングをサポートします。ウェブカメラ、マイク、またはネットワークソースからキャプチャし、YouTube、Twitch、またはカスタムRTMPサーバーなどのプラットフォームへストリームをプッシュできます。低遅延オプションと適応ビットレートストリーミングにより、FFmpegはイベント、ゲーム、監視向けのライブ放送パイプラインを実現します。複数の入力を処理し、グラフィックをオーバーレイし、リアルタイムフィルターを適用できる能力は、プロフェッショナルグレードのストリーミング設定に最適です。また、DASH/HLS用に出力をセグメント化して、モバイルやウェブクライアントでの適応再生が可能です。

動画ファイルをYouTube Liveにストリーミングする方法は?

ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -g 50 -c:a aac -b:a 160k -f flv "rtmp://a.rtmp.youtube.com/live2/your_stream_key"

ビデオフィルタリングとポストプロセッシング

FFmpeg の libavfilter フレームワークは、フィルタの有向非循環グラフを通じて強力なリアルタイム動画フィルタリングを可能にします。クロップ、スケール、回転、デインターレース、ノイズ除去、透かしのオーバーレイ、テキストの追加、カラー調整、スローモーションやタイムラプスといった複雑なエフェクトの適用などが、ストリーム全体を再エンコードせずに行えます。フィルタはマルチステージ処理のためにチェーン接続でき、ハードウェアアクセラレーション(例:NVENC、VAAPI、VideoToolbox)により最新の GPU でも高性能を実現します。このため、FFmpeg は動画編集者、コンテンツクリエイター、視覚的強化やフォーマット正規化を必要とするメディア処理パイプラインを構築する開発者にとって欠かせない存在です。

動画をトリミング、スケーリング、そしてウォーターマークを追加する方法は?

ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v]crop=1280:720:0:0[scaled];[scaled][1:v]overlay=10:10" -c:a copy output.mp4

メタデータと字幕の抽出・操作

FFmpeg はメディアファイルに埋め込まれたメタデータ(タグ)と字幕を完全に制御できます。シンプルなコマンドを使用して、メタデータ(例:タイトル、アーティスト、アルバム、GPS データ)を抽出、編集、または削除したり、SRT、ASS、VTT などの形式間で字幕を変換したりできます。字幕をビデオに焼き付けることや、別トラックとして埋め込むこともサポートしています。アクセシビリティやローカリゼーションのワークフローでは、FFmpeg は字幕ファイルのバッチ処理、タイミング調整、言語トラック管理を可能にします。これにより、字幕ローカリゼーション、メディア資産管理、埋め込みメタデータを必要とする放送基準への準拠に最適です。

動画ファイルから字幕を抽出する方法は?

ffmpeg -i input.mkv -map 0:s:0 -c:s srt output.srt
 日本