FFmpegのインストールと使用方法 （Rocky Linux 9.2 ）

FFmpegは、ビデオを頻繁に扱う人々に人気のあるツールです。FFmpegは、オーディオ、ビデオ、その他のマルチメディアファイル/ストリームのトランスコーディング用のライブラリセットを備えた無料でオープンソースのツールです。H.264、H.265、VP8、VP9、AAC、OPUSなどの複数のオーディオ/ビデオコーデック、MP4、FLV、MKV、TS、WEBM、MP3ファイル形式、HTTP/HTTPS、TCP、UDP、RTMP、RTSP、HLSストリーミングプロトコルをサポートしています。

主な特徴:
- 様々な一般的および非一般的な画像、オーディオ、ビデオフォーマットに対応。
- コンパクトディスク、Advanced Linux Sound Architecture (ALSA)、OpenAL（入力のみ）、Windows DirectShowなどのメディアやインターフェースをサポート。
- リサンプリング、パス/ストップフィルター、イコライザー、ダイナミクス、歪み、フィルタリングなどのフィルターに対応。

搭載ライブラリ:
- Libavutil: ポータブルマルチメディアプログラミングを支援するユーティリティライブラリ。
- Libavfilter: Gstreamer風のフィルターグラフを通じてフィルターの強化と編集に使用。
- Libavdevice: 一般的なマルチメディア入出力デバイスへの取り込みおよびレンダリングのための汎用フレームワークを提供。
- Libavcodec: オーディオ/ビデオコーデックライブラリ。
- Libavformat (Lavf): オーディオ/ビデオコンテナのmux。
- Libswscale: 高度に最適化された画像スケーリングおよび色空間とピクセル形式の変換操作を実行。
- Libswresample: 高度に最適化されたオーディオのリサンプリング、リマトリクシング、およびサンプル形式の変換操作を実行。

Rocky Linux 9 / AlmaLinux 9でのFFmpegのインストールと使用方法:

1. RPM Fusionリポジトリの追加
Rocky Linux 9 / AlmaLinux 9のリポジトリにはFFmpegが含まれていません。追加のRPM Fusionリポジトリを追加する必要があります。
まず、EPELリポジトリとPowerTools（CRB）を有効にします。
```
sudo dnf install epel-release
sudo dnf config-manager --set-enabled crb
```
次に、Rocky Linux 9 / AlmaLinux 9にRPM Fusionリポジトリを追加します。
```
sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm -y
sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm -y
```

2. Rocky Linux 9 / AlmaLinux 9にFFmpegをインストール
次のコマンドを実行して、Rocky Linux 9 / AlmaLinux 9にFFmpegをインストールします。
```
sudo dnf install ffmpeg ffmpeg-devel
```

インストールが成功したら、インストールされたバージョンを確認します。
```
$ ffmpeg -version
```

また、次のコマンドで詳細情報を取得することもできます。
```
$ rpm -qi ffmpeg
```

3. Rocky Linux 9 / AlmaLinux 9でのFFmpegの使用
インストール後、上記のように、FFmpegを使用してさまざまな機能を実行できます。このガイドでは、基本的なFFmpegの使用方法をカバーします。

### A. ビデオ情報の取得
FFmpegを使用してビデオ情報を取得するには、-iフラグを使用します。
```
ffmpeg -i example-video.mp4 -hide_banner
```
-hide_bannerオプションは、ビデオに関する不要な情報を隠すために使用されます。

### B. 基本的なビデオ/オーディオ変換
FFmpegを使用してファイルを変換する場合、入力ファイルと出力ファイルを指定する必要があります。通常、入力ファイル形式は自動的に検出され、提供された拡張子に応じて出力が推測されます。

・ビデオファイルの変換
例えば、MP4ビデオファイルをMOV形式に変換するには、次の構文のコマンドを使用します。
```
ffmpeg -i input-video.mp4 output-video.mov
```

・オーディオファイルの変換
FFmpegを使用して、オーディオファイルを一つの形式から別の形式に変換することもできます。コマンドには入力ファイル形式と出力ファイル形式があります。例えば：
```
ffmpeg -i input.mp3 output.ogg
```

### C. コーデックを使用した変換
上記の変換は、特定のコーデックを使用しても実行できます。使用するコーデックは-cフラグで指定されます。例えば：
・ビデオの変換
libvpxビデオコーデックとlibvorbisオーディオコーデックを使用して、mp4ビデオファイルをWebMに変換するには：
```
ffmpeg -i input.mp4 -c:v libvpx -c:a libvorbis output.webm
```
・オーディオの変換
libopusを使用してmp3オーディオファイルをOggに変換するもう一つの例は：
```
ffmpeg -i input.mp3 -c:a libopus output.ogg
```
・ビデオからオーディオの抽出
コーデックを使用してビデオからオーディオファイルを抽出することもできます：
```
ffmpeg -i video.mp4 -c:a libmp3lame -q:a 0 -map a output_file.mp3
```

### D. ビデオサイズの処理
アップロード/使用するために特定のビデオサイズが必要な場合があります。他のトリミングツールをダウンロードする代わりに、FFmpegを使用してこれを実現できます。必要なのは、以下のパラメータを使用してコマンドを実行することです。

・-ss：クリップの開始時間を設定します。
・-to：終了時間を指定します。
・-c：使用するコーデックを指定します。
・-t：クリップの期間を設定するために使用できます。
上記のパラメータから、ビデオをトリミングするためのコマンドを生成できます。例えば：
```
ffmpeg -i example-video.mp4 -ss 00:02:25 -to 00:03:50 -c copy output-trim.mp
```

### E. FFmpegを使用した高度なビデオ編集

FFmpegは変換やトリミングだけでなく、さまざまなビデオ編集機能を提供します。

#### ビデオのスケーリング
ビデオをスケーリングするには、以下のコマンドを使用します。
```
ffmpeg -i example-video.mp4 -vf scale=1920:1080 output-scale.mp4
```
このコマンドでは:
- `-vf`: ビデオに適用されるフィルターを指定します。
- `scale`: 出力ビデオのサイズを設定します。

#### 複数のビデオの結合
同じコーデックのビデオリストを結合することも可能です。結合するビデオのリストを含む.txtファイルを作成し、以下のコマンドを使用します。
```
ffmpeg -f concat -i my-video-list.txt -c copy sum-output.mp4
```
このコマンドでは、`concat` パラメーターがファイルを結合します。

#### ビデオの回転
ビデオを回転させるには、以下のコマンドを使用します。
```
ffmpeg -i example-video.mp4 -vf "transpose=2" output-rotate.mp4
```
このコマンドでは:
- `transpose=0`: デフォルトで垂直に反転します。
- `transpose=1`: ビデオを時計回りに90度回転します。
- `transpose=2`: ビデオを反時計回りに90度回転します。
- `transpose=3`: ビデオを垂直に反転します。

例えば、ビデオを180度時計回りに回転させるには、`transpose` パラメーターを二回指定します。
```
ffmpeg -i example-video.mp4 -vf "transpose=2,transpose=2" output-rotate.mp4
```

#### アニメーションGIFの作成
ビデオをアニメーション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
```

#### ビデオからのフレーム抽出
FFmpegを使用してビデオからフレームを抽出することも可能です。以下のコマンドを使用して、所望の入力ビデオから毎秒JPEGフレームを抽出します。
```
ffmpeg -i example-video.mp4 -r 1 image-%02d.jpeg
```
出力ファイルは二桁の番号が付けられます（例: 01.jpeg、02.jpeg）。PNG、BMPなどの他のフォーマットでも可能です。