Linux 上の FFmpeg でできる 10 のトリック

in tech

Linux ターミナルをもっと活用したいですか?ビデオとコマンド ラインを直感的に組み合わせることはできないかもしれませんが、FFmpeg を使用すると、ターミナルに簡単なコマンドを入力するだけで実際にビデオ ファイルに対してさまざまな操作を行うことができます。

聞いたことがない方のために付け加えておきますが、FFmpeg はメディアに関連するものであれば何でも処理できるコマンド ライン ツールです。これはほとんどの Linux ディストリビューションのリポジトリで入手できるため、パッケージを見つけてインストールするだけで使用を開始できます。

ビデオをすばやく再生したい場合でも、情報を取得したい場合でも、クールなビデオ編集テクニックを実行したい場合でも、FFmpeg が役に立ちます。 Linux マシンで FFmpeg を使用して実行できる便利な機能をいくつか紹介します。

ビデオを再生する

お気に入りのビデオ プレーヤーがすでにあるかもしれませんが、それは素晴らしいことです。ただし、完全なグラフィカル アプリケーションを開かずに、すばやく簡単に何かを視聴する方法が必要な場合もあります。 FFmpeg の組み込みプレーヤー ffplay を使用してこれを行うことができます。

たとえば、ビデオを再生するには、ターミナルを開いて次を実行します。

ffplay your_video_file.mp4
ffplayを使用してターミナルでビデオを再生します。

ビデオが別のウィンドウにポップアップ表示され、再生できる状態になります。 「q」で終了、「p」で一時停止、左または右の矢印キーで早送りまたは巻き戻しなどのコマンドで制御できます。

ビデオをループ再生したい場合は、次のコマンドを実行します。

ffplay -loop 0 your_video_file.mp4

-loop 0 オプションを指定すると、無限にループします。 0 を任意の数値に置き換えて、繰り返す回数を設定できます。

Linux コマンド プロンプトを表示する青い背景のラップトップ。

Linux コマンドラインから音楽コレクションを再生する方法

Linux ターミナル ウィンドウでローカルの音楽コレクションを再生する方法は次のとおりです。

通常、ビデオ ファイル情報を取得するには、メディア プレーヤーのメニューを調べるか、場合によっては別のアプリを使用する必要があります。しかし、FFmpeg を使用すると、コマンドを実行するだけでこれらすべての情報を取得できます。

メディア情報を取得するには、次を実行するだけです。

ffmpeg -i your_video_file.mp4

わずか数秒で、コーデック、ビットレート、フレーム レートなどを含む包括的な情報が表示されます。

端末内でFFmpegを使用して映像情報を表示します。

ビデオ、オーディオ、および字幕ストリームに関するさらに詳細な情報については、ffprobe (FFmpeg のツール) を使用してください。

ffprobe -show_streams –i your_video_file.mp4

JSON 形式でよりクリーンな出力を得るには、次のコマンドを実行します。

ffprobe -v quiet -print_format json -show_format -show_streams your_video_file.mp4
ターミナル ウィンドウにビデオ情報を適切な JSON 形式で表示します。

さらに、これらのコマンドはすべて、ビデオ ファイルを実際に再生せずに効率的に分析するのに役立つことをお伝えしておきます。

画面を録画する

FFmpeg では画面を録画することもできます。 Linux で何かを行う方法を誰かに見せたい場合でも、簡単なデモを作成したい場合でも、追加の画面録画プログラムは必要ありません。

画面全体を 10 秒間録画したいとします。これを使用してこれを行うことができます:

ffmpeg -f x11grab -video_size 1920x1080 -r 30 -i :0.0+0,0 -t 10 output.mp4

このコマンドは、1920×1080 の解像度、30 フレーム/秒のフレーム レートでデスクトップをキャプチャします。さらに、「-i :0.0+0,0」オプションは、どの画面を記録するかを FFmpeg に指示します。たとえば、この場合、「:0.0」はメイン画面を指し、「+0,0」は左上隅から録画を開始することを意味します。

システムで Xorg の代わりに Wayland を使用している場合、FFmpeg の x11grab は Xorg で最適に動作するため、黒い画面の問題が発生することがあります。 Xorg セッションに切り替えると、問題が解決されるはずです。

画面のサイズや位置がわからない場合は、次のようにして確認できます。

xdpyinfo | grep dimensions

FFmpeg コマンドは以前、音声なしでデスクトップ画面を記録することに注意してください。したがって、ビデオとともにオーディオも録音したい場合は、ビデオ入力とともにオーディオ入力デバイスを指定する必要があります。

たとえば、「-f alsa -ipulse」オプションを使用して、画面のビデオとオーディオの両方をキャプチャできます。

ffmpeg -f x11grab -video_size 1920x1080 -r 30 -i :0.0+0,0 -f alsa -i default -t 10 output.mp4

特定のウィンドウを記録する場合、FFmpeg コマンドは少し複雑ですが、全画面をすばやく記録するには、FFmpeg が最適な選択肢です。さらに、ターミナルで作業するのが好きなら、録音プロセスのあらゆる側面を完全に制御できます。

  デスクトップ上の OBS Studio

OBS Studio を使用して Linux で画面をキャプチャする方法

この無料のオープンソース プログラムを使用して、キャプチャまたはライブ ストリーミングを始めましょう。

サムネイルやクールなショットをキャプチャするために、ビデオから 1 つのフレームを抽出したいと思ったことはありませんか? FFmpeg を使用すると、このタスクが非常に簡単になります。

たとえば、ビデオから 1 秒ごとに 1 枚の画像を抽出し、画像ファイルとして保存したいとします。これを行うには、次を実行します。

ffmpeg -i input.mp4 -r 1 image-%04d.jpg
特定のフォルダーに表示される抽出された画像。

ここで、オプション「-r 1」は、キャプチャ レートを 1 秒あたり 1 枚の画像に設定します。ビデオの各秒から 1 フレームを抽出します。この数値を調整して、画像をキャプチャする頻度を増減できます。必要に応じて、JPG を PNG または別の画像形式に変更することもできます。

画像をビデオに変換する

FFmpeg は画像を抽出するだけでなく、一連の画像をビデオに組み立てることもできます。スライドショー、アニメーション、タイムラプスのいずれを作成する場合でも、FFmpeg を使用するとプロセスが簡素化されます。

変換する前に、画像に連続した名前が付いていることを確認してください (例: image-0001.jpg、image-0002.jpg)。次に、次のコマンドを使用して、これらの連続画像をビデオに変換します。

ffmpeg -framerate 1 -i image-%04d.jpg -c:v libx264 -r30 output.mp4

ここでは、フレーム レート オプションを 1 FPS に設定します。つまり、5 枚の写真があり、5 秒のビデオを好む場合、フレーム レートは 1 になります。フレーム レートの値を調整して、ビデオを速くしたり遅くしたりすることができます。

前のコマンドは、音楽を追加せずに画像をビデオに変換します。しかし、ビデオに音楽を含めたい場合はどうすればよいでしょうか?これを実行し、「music.mp3」を必要なオーディオ ファイルに置き換えます。

ffmpeg -framerate 1 -i image_%04d.jpg -i music.mp3 -c:v libx264 -r30 -shortest slideshow.mp4

ここで、-shortest オプションを指定すると、ビデオが短い入力と同じ長さになります。したがって、音声がスライドショーより長い場合、ビデオはスライドショーの長さと一致します。

Linux ターミナルから画像のサイズをすばやく変更、変換、変更する方法

Linux ターミナルから画像のサイズをすばやく変更、変換、変更する方法

ImageMagick は、イメージを変更および操作するためのコマンドライン ユーティリティのスイートです。

ビデオを MP3 または GIF に変換

FFmpeg の最も強力な機能の 1 つは、ビデオを MP3 に変換したり、ビデオから GIF アニメーションを作成したりするなど、ビデオをさまざまな形式に変換することです。

ビデオから音声を抽出するには、 -vn このオプションにより、FFmpeg はビデオ ストリームを破棄し、オーディオのみを MP3 に変換します。

ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3

必要に応じて、output.mp3 を output.wav または別のオーディオ形式に変更することもできます。

ビデオを GIF に変換するには、次を使用します。

ffmpeg -i sample_video.mp4 output.gif

これを使用して、ビデオの特定の部分を抽出して GIF に変換することもできます。

ffmpeg -ss 30.0 -t 2.1 -i sample_video.mp4 output.gif

このコマンドは、ビデオの 00:30 の長さの先頭から 2.1 秒をトリミングし、GIF に変換します。

映画や番組に字幕を追加する

映画に字幕を追加すると、特に別の言語でコンテンツを視聴する場合に非常に便利です。 FFmpeg を使用すると、ビデオに字幕を追加するプロセスが簡素化されます。

まず、通常は SRT 拡張子の付いた字幕ファイルを取得します。たとえば、字幕ファイル (subtitles.srt など) とビデオ (input.mp4) がある場合、次のコマンドを使用して字幕をビデオにハードコードできます。

ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output.mp4

このコマンドは字幕を永続的に埋め込み、字幕が表示されたままになり、オフにできないようにします。

視聴者がオンまたはオフにできるオプションの字幕を使用したい場合は、これを使用します。

ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4

このコマンドは、元のビデオ品質を維持しながら、字幕を別のトラックとして保持します。

トランスコーディングせずにビデオのインデックスを再構築する

場合によっては、ビデオに不具合が発生することがあります。スキップしたり、フリーズしたり、早送りや巻き戻しができなくなったりすることがあります。多くの場合、この問題はビデオ インデックスの破損によって発生します。この問題を解決するには、ビデオを再エンコードせずにインデックスを再構築する必要がある場合があります。

幸いなことに、FFmpeg はビデオ自体を変更せずにインデックスを修復できることがよくあります。再多重化として知られるこのプロセスは、ファイルの構造を修正しながら元のビデオとオーディオの品質を維持するため、高速です。

ビデオ インデックスを再構築するには、次を実行します。

ffmpeg -i input.mp4 -c copy -copyts output.mp4

ここで、-c copy オプションは、ビデオとオーディオ ストリームをそのままコピーするように FFmpeg に指示し、品質を維持してプロセスを高速化します。 -copyts オプションを使用すると、タイミング情報が正しくコピーされるようになります。これは、スムーズな再生にとって重要です。

この方法は、ビデオ ファイルをすばやく確認して修復する場合に役立ちます。ただし、問題が解決しない場合は、ビデオがひどく破損している可能性があります。

ビデオのサイズを変更する

ビデオのサイズ変更は、FFmpeg の最も便利な機能の 1 つです。ソーシャル メディア、モバイル画面、ストレージの最適化に合わせてビデオのサイズを簡単に調整できます。ビデオが小さいほど、占有するスペースが少なくなり、アップロードが速くなり、遅い接続でもパフォーマンスが向上します。

ビデオを特定のサイズ (1280×720 など) に拡大縮小するには、次を使用します。

ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4

FFmpeg にアスペクト比を自動的に維持させたい場合は、寸法を 1 つだけ指定するか、式を使用します。

ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4

これにより、幅が 640 ピクセルに設定され、FFmpeg はアスペクト比を維持するために適切な高さを計算します。ただし、ダウンスケーリングすると品質が低下する可能性があるため、解像度は慎重に選択してください。

ビデオのトリミングとクロップ

動画をトリミングすると、品質に影響を与えることなく必要な部分だけを抽出できます。これは、不要なイントロ、アウトロ、または間違いを排除するのに最適です。

たとえば、ビデオの 10 秒から始まる 20 秒のセグメントを抽出するには、次のコマンドを実行します。

ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output_trimmed.mp4

ここで、「-ss 00:00:10」は FFmpeg に 10 秒のマークで開始するように指示し、「-to 00:00:30」はビデオを 30 秒で停止します。また、「-c copy」オプションを使用すると、ビデオとオーディオが再エンコードせずにコピーされるため、元の品質を維持しながらプロセスが大幅に高速化されます。

トリミングでは、不要なエッジを削除したり、ビデオの最も重要な部分を拡大したりできます。ビデオを左上隅から開始して 640×480 ピクセルにトリミングするには、次のコマンドを実行します。

ffmpeg -i input.mp4 -vf "crop=640:480:0:0" output_cropped.mp4

切り抜きフィルターは、幅、高さ、切り抜きを開始する場所の X 座標と Y 座標の 4 つの値を取ります。この場合、幅と高さは 640×480 に設定され、0:0 を指定すると、元のビデオの左上隅からトリミングが開始されます。

VLC メディア プレーヤーのアイコンに似たトラフィック コーン。

VLCメディアプレーヤーでビデオをトリミングする方法

動画から不要な部分を切り取りましょう!


これらの FFmpeg テクニックを練習して学ぶことで、簡単に生産性を向上させ、ワークロードを合理化できます。そして、これはほんの始まりにすぎないことを忘れないでください。 FFmpeg には、探索されるのを待っているものがたくさんあるので、飛び込んで実験を続けてください。

関連記事

前の投稿
はい、携帯電話のバッテリーはまだ交換可能です (アップグレードするよりも優れています)
次の投稿
私はスプレッドシートが決して得意ではありませんでしたが、Gemini がそれを変えようとしています