ウェブサイト検索

Linuxでの音声および映像処理のためのFFmpegコマンドの使用方法


FFmpegはよく知られたコマンドラインのメディア処理ツールです。ここでは、Linux上でオーディオおよびビデオファイルを修正するために、インストールおよび使用する方法を説明します。

ほぼすべての動画に関わる人が、FFmpegについて聞いたことがあるかもしれません。FFmpegを知らない人のために説明すると、FFmpegは、あらゆる動画形式を別の形式に変換し、そのコーデックを変更することができる無料でオープンソースのプログラムです。

FFmpeg は、ほぼすべてのオーディオ/ビデオコーデック (H.264、H.265、VP8、VP9、AAC、OPUS など)、ファイル形式 (MP4、FLV、MKV、TS、WEBM、MP3 など)、さらにはストリーミングプロトコル (HTTP、RTMP、RTSP、HLS など) をサポートしています。

Linux上で音声および動画ファイルを処理するためにFFmpegをインストールして使用する方法は以下の通りです。

LinuxへのFFmpegのインストール

FFmpegは、ほぼすべての主要なLinuxディストリビューションのデフォルトリポジトリにある無料でオープンソースのツールです。また、自分でコンパイルしたい場合は、そのソースコードも無料で入手できます。

Debian
sudo apt install ffmpeg

Fedora
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf -y install ffmpeg

RHEL/CentOS
yum install ffmpeg ffmpeg-devel

Arch Linux
pacman -S ffmpeg

インストール中にすべてが順調に進めば、-version 引数を使用すると FFmpeg のバージョンが表示されるはずです。

ffmpeg -version

FFmpegを使用したビデオ情報の取得

FFmpegを使用して編集したい動画の情報を見るためには、-iフラグを使用することができます:

ffmpeg -i example-video.mp4 -hide_banner

ここで、-hide_bannerパラメータの役割は、不必要な情報を非表示にすることです。このパラメータを削除すると、出力の違いを見ることができます。

ご覧のように、サンプルビデオのビデオコーデックタイプ、作成日、メタデータ、およびエンコーダー構造など、多くの情報を取得することが可能です。

ビデオまたはオーディオファイルを別の形式に変換すること

FFmpegの最も便利な機能の一つは、動画や音声を別のフォーマットに変換できることです。これを簡単な1行のコマンドで実行することができます。

FFmpegを使ってMOVをMP4に変換する

以下のコマンドを使用して、MOV形式のビデオファイルをMP4にFFmpegで変換できます:

ffmpeg -i input-mov-video.mov output-video.mp4

まず、-iパラメータを使用します。これは入力動画を表します。次に、変換したいファイルを入力します。最後に、変換したいフォーマットを入力します。出力には任意の名前を付けることができます。

FFmpegが実行されている間、コマンド画面に行った変更が表示されます。出力ファイルは現在の作業ディレクトリに保存されます。

FFmpegを使ってWAVをMP3に変換する

動画と同様に、オーディオファイルに対しても同じ変換を行うことができます。たとえば、WAVオーディオファイルをMP3に変換するには、次のようにします:

ffmpeg -i example-wav.wav -vn -ar 48000 -ac 2 -b:a 256 output.mp3

このコマンドはビデオ変換メソッドよりも多くのパラメータを持っていますが、理解するのは難しくありません。これらを説明すると:

  • -vn: 時々、あなたが聴いている音声ファイルには画像が含まれています。これらの画像は通常、ビデオから派生したものです。そのような画像を出力に含めたくない場合、このパラメータを使用できます。
  • -ar: このパラメーターは、変換したいオーディオファイルの音声周波数を設定することを可能にします。音質と周波数を8kHz、44.1kHz、または48kHzなどの値で調整できます。
  • -ac: 以前にモノとステレオという用語を聞いたことがあるかもしれません。このパラメーターは、オーディオチャンネルの数を設定するのに役立ちます。
  • -b:a: このパラメータを使用すると、音声のビットレートを秒ごとに設定できます。キロビット数が高いほど、音質が高くなります。

FFmpegを使用した音声操作

FFmpegは動画から音声を分離することもできます。このためには、-vn パラメータを使用するだけで十分です。

ffmpeg -i example-video.mp4 -vn output.mp3

もし動画から音声を分離することができたら、今度は動画から音声を削除してみることができます。ここでの違いは-anパラメータです。このパラメータは、動画の音を無効にしたい場合に考慮しておくべきです:

ffmpeg -i example-video.mp4 -an output-mute.mp4

FFmpegによる動画サイズ処理

動画のサイズは、特にどこかにアップロードしたい時に、時々非常に面倒です。FFmpegを使えば、もはやそれらをトリミングするためにプログラムをダウンロードする必要はありません。しかし、これを行うために知っておくべきいくつかのパラメータがあります。

  • -ss: このパラメータを使用してクリップの開始時間を設定します
  • -to: クリップの終了時間を指定することができます
  • -c: このパラメータを使用してクリップのコーデックを設定します
  • -t: このパラメータを使用してクリップの長さを設定します

これらのパラメータを使用して、多くの例を導き出すことができます。たとえば、ビデオをトリムしたい場合は、次のようなものを使用できます:

ffmpeg -i example-video.mp4 -ss 00:02:25 -to 00:03:50 -c copy output-trim.mp4

動画全体ではなく、動画内の画像のみをトリミングすることも可能です。そのためには、次のようなものを利用することができます:

ffmpeg -i example-video.mp4 -filter:v "crop=w:h:x:y" output-crop.mp4

前記のコマンドで使用されるパラメータは以下の通りです:

  • -filter:v: このパラメータは、動画に適用するフィルタリングプロセスを指定します。
  • クロップ: このパラメータはクリッピング操作が行われることを指定するためのものです
  • w:h:x:y: おそらくもうお分かりかもしれませんが、w、h、x、yの変数はそれぞれトリミングボックスの幅、高さ、位置を示しています。

LinuxでFFmpegを使った動画編集

ビデオ編集は、単にトリミングやカットだけで終わるわけではありません。時には、ビデオのスケールも変更する必要があります。以下のコマンドを使用すると、希望のサイズにビデオをリサイズすることができます:

ffmpeg -i example-video.mp4 -vf scale=1920:1080 output-scale.mp4
  • -vf: このパラメータは、上で見た-filter:v引数と同じように動作します。
  • スケール: このパラメータを使用して、出力で希望するスケールサイズを指定できます。

FFmpegは複数のビデオを結合することもできます。同じコーデックでエンコードされた複数のクリップがあると想像してください。マージしたいビデオのリストを.txtファイルに入力します。次に、以下のコマンドを実行します。

ffmpeg -f concat -i my-video-list.txt -c copy sum-output.mp4

ここでのconcatパラメータはファイルを結合します。また、FFmpegを使用して動画を回転させることも可能です。

ffmpeg -i example-video.mp4 -vf "transpose=2" output-rotate.mp4
  • transpose=0: 垂直に反転(デフォルト)
  • 転置=1: 時計回りに90度回転する
  • 転置=2: 反時計回りに90度回転します
  • transpose=3: 垂直に反転する

動画を時計回りに180度回転させるには、transposeパラメータを2回指定する必要があります:

ffmpeg -i example-video.mp4 -vf "transpose=2,transpose=2" output-rotate.mp4

FPSとGOPの運営

ご存知のように、FPSは1秒間のフレーム数を意味します。GOP(グループオブピクチャー)は2つのキーフレームの間の距離です。FFmpegは、FPSやGOPを含むいくつかのパラメータを変更するのにも便利です。以下のコマンドを使用すると、FFmpegは元のFPSを設定した値に変更します:

ffmpeg -i example-video.mp4 -vf "fps=60" output-fps.mp4

GOPについては、-gパラメータを使用し、その値をお好きなものに設定できます。ただし、キーフレームを強制的に多く設定することは、一部のエンコーダーの前方アルゴリズムに悪影響を及ぼす可能性があることに注意してください。

ffmpeg -i example-video.mp4 -g 200 output-gop.mp4

FFmpegを使ってアニメーションGIFを作成する

FFmpegは、動画をアニメーションGIFに変換するのにも最適です。これを行うには、シンプルな変換コマンドを使用できます。

ffmpeg -i example-video.mp4 output-gif.gif

しかし時々、GIFをカスタマイズしたい場合もあります。そのために、上で説明したさまざまなパラメータを使用できます。

ffmpeg -ss 00:01:15 -i example-video.mp4 -to 10 -r 10 -vf scale=250:-1 output-gif.gif

ここでの -r パラメータはフレームレートを意味します。このように、単一のコマンドラインで多くの異なるカスタマイズが可能です。

FFmpegを使用して動画からフレームを抽出する

画像を1つまたは複数動画に変換することに加えて、動画からフレームを抽出することもできます。次のコマンドは、入力動画から1秒ごとに1つのフレームを抽出します。また、抽出された画像には01.jpeg、02.jpegなどの2桁の名前が付けられます。必要に応じて、学習した他のパラメーターを追加することもできます。

ffmpeg -i example-video.mp4 -r 1 image-%02d.jpeg

抽出された画像には、PNGやBMPなどの他の形式も使用できます。

なぜLinuxでFFmpegを使用すべきなのか?

ご覧のとおり、FFmpegは多くの点で非常に利点があります。これには技術的な知識やプロフェッショナルなLinuxの経験は必要ありません。わずか数パラメーターでさまざまなメディア処理機能を実行できます。長くない編集を行う予定であれば、高価なコンピュータプログラムやオンラインプレミアムメンバーシップは必要ありません。さらに、FFmpegは低スペックのデバイスでも非常にうまく機能します。

また、FFmpegの機能は上記のものに限りません。ドキュメントやユーザーマニュアルを読むと、ソフトウェアが実際にどれだけ強力であるかがわかります。--help パラメータや man コマンドを使用しても、FFmpegの使用に関するより詳細な情報を得ることができます。また、FFmpegに匹敵するLinux用の他の優れたコンバータもあります。

関連記事: