LinuxでFFmpegを使ってできる10のトリック
Linuxターミナルでより多くのことをしたいですか?動画とコマンドラインを直感的につなげることはないかもしれませんが、FFmpegを使えば、ターミナルで簡単なコマンドを入力するだけで動画ファイルに対して多くのことができるのです。
もし未だに聞いたことがなければ、FFmpegはメディアに関するあらゆることを処理できるコマンドラインツールです。ほとんどのLinuxディストリビューションのリポジトリに用意されているので、パッケージを見つけてインストールするだけで使用を始めることができます。
動画をすぐに再生したり、情報を取得したり、クールな動画編集のトリックを実行したりしたい場合、FFmpegがあなたをサポートします。ここでは、Linuxマシン上でFFmpegを使用してできる便利なことをいくつか紹介します。
10. ビデオを再生する
お気に入りのビデオプレーヤーがすでにあるかもしれませんが、それは素晴らしいことです。しかし、時にはフルグラフィカルアプリケーションを開くことなく、何かを手軽に見る方法が必要です。それをFFmpegの内蔵プレーヤーであるffplayを使用して行うことができます。
例えば、ビデオを再生するには、ターミナルを開いて次のコマンドを実行してください:
ffplay your_video_file.mp4あなたのビデオは別のウィンドウに表示され、再生の準備が整います。 "q"キーで終了、"p"キーで一時停止、左または右の矢印キーで早送りや巻き戻しができます。
ビデオをループで再生したい場合は、次のコマンドを実行してください。
ffplay -loop 0 your_video_file.mp4-loop 0オプションは無限にループします。0を任意の数に置き換えることで、何回繰り返すかを設定できます。
9. メディア情報を取得する
通常、ビデオファイルの情報を取得するには、メディアプレーヤーのメニューを掘り下げたり、場合によっては別のアプリを使用したりする必要があります。しかし、FFmpegを使えば、これらの情報をすべて取得するのはコマンド一つで済みます。
メディア情報を取得するには、次のように実行してください:
ffmpeg -i your_video_file.mp4数秒以内に、コーデック、ビットレート、フレームレートなどを含む包括的な出力が表示されます。
ビデオ、オーディオ、字幕ストリームに関するさらに詳しい情報を得るには、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さらに、これらのコマンドは実際に再生することなく、効率的に動画ファイルを分析するのに役立つことをお伝えします。
8. 画面を記録する
FFmpegは、画面を録画することもできます。Linuxで何かをする方法を誰かに見せたい場合や、簡単なデモを作成したい場合、追加の画面録画プログラムは必要ありません。
例えば、10秒間あなたの画面全体を録画したいとしましょう。これを使ってできます。
ffmpeg -f x11grab -video_size 1920x1080 -r 30 -i :0.0+0,0 -t 10 output.mp4このコマンドは、30フレーム/秒のフレームレートで1920x1080解像度のデスクトップをキャプチャします。さらに、「-i :0.0+0,0」オプションはFFmpegにどの画面を録画するかを指定します。例えば、私たちの場合、「:0.0」はメインスクリーンを指し、「+0,0」は左上隅から録画を開始することを意味します。
あなたのシステムがXorgの代わりにWaylandを使用している場合、時折ブラックスクリーンの問題が発生することがあります。これはFFmpegのx11grabがXorgと最も相性が良いためです。Xorgのセッションに切り替えることで、この問題は解決するはずです。
画面のサイズや位置がわからない場合は、これで確認できます:
xdpyinfo | grep dimensionsあなたは、以前のFFmpegコマンドが音声なしでデスクトップ画面を録画することを認識しておくべきです。したがって、動画と一緒に音声も録音したい場合は、動画入力の他に音声入力デバイスを指定する必要があります。
たとえば、画面のビデオと音声の両方をキャプチャするには「-f alsa -i pulse」オプションを使用できます:
ffmpeg -f x11grab -video_size 1920x1080 -r 30 -i :0.0+0,0 -f alsa -i default -t 10 output.mp4
特定のウィンドウを録画する場合、FFmpegのコマンドは少し複雑になりますが、素早い全画面録画にはFFmpegは優れた選択肢です。さらに、ターミナルで作業するのが好きな方には、録画プロセスのすべての側面を完全に制御できる利点があります。
7. 動画から画像を抽出する
動画から一つのフレームを抽出したことはありますか?サムネイルやクールなショットをキャプチャするために。FFmpegはこの作業を非常に簡単にします。
たとえば、ビデオから1秒ごとに1枚の画像を抽出して、画像ファイルとして保存したいとします。そのためには、次のように実行します:
ffmpeg -i input.mp4 -r 1 image-%04d.jpgここでは、オプション「-r 1」がキャプチャレートを1秒あたり1枚の画像に設定します。これは、ビデオの各秒から1フレームを抽出します。この数値を調整することで、画像をより頻繁または少なくキャプチャすることができます。また、必要に応じてJPGをPNGや他の画像フォーマットに変更することもできます。
6. 画像を動画に変換する
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ここで、最短オプションは動画を短い入力と同じ長さにします。したがって、音声がスライドショーよりも長い場合、動画はスライドショーの長さに合わせます。
5. ビデオをMP3またはGIFに変換する
FFmpegの最も強力な機能の一つは、動画を異なるフォーマットに変換することであり、例えば動画を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に変換します。
4. 映画に字幕を追加する
映画に字幕を追加することは非常に便利です。特に異なる言語のコンテンツを視聴する際にはなおさらです。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このコマンドは、字幕を別のトラックとして保持し、元のビデオ品質を保ちます。
3. トランスコーディングなしでビデオのインデックスを再構築する
時々、ビデオがグリッチのように見えることがあります—スキップしたり、フリーズしたり、早送りや巻き戻しができなくなることがあります。この問題は、破損したビデオインデックスから発生することがよくあります。この問題を解決するには、ビデオを再エンコードすることなくインデックスを再構築する必要があるかもしれません。
幸運なことに、FFmpegはしばしば動画自体を変更することなくインデックスを修復できます。このプロセスはリマキシングとして知られ、元の動画と音声の品質を保ちながらファイルの構造を修正するため、迅速です。
ビデオインデックスを再構築するには、次のコマンドを実行してください:
ffmpeg -i input.mp4 -c copy -copyts output.mp4ここで、-c copyオプションはFFmpegに、ビデオとオーディオのストリームをそのままコピーし、品質を維持しながらプロセスを速めるよう指示します。-copytsオプションは、タイミング情報が正しくコピーされることを保証し、これはスムーズな再生にとって重要です。
このアプローチは、動画ファイルを迅速にチェックし修復するのに役立ちます。しかし、問題が継続する場合、動画が深刻に破損している可能性があります。
2. 動画のサイズを変更する
動画のサイズ変更はFFmpegの最も便利な機能の一つです。ソーシャルメディア、モバイルスクリーン、またはストレージの最適化のために、動画のサイズを簡単に調整できます。小さい動画はスペースを取りにくく、アップロードが速く、遅い接続でもより良く動作します。
特定の寸法(例:1280x720)に動画をスケーリングするには、次のようにします。
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4FFmpegにアスペクト比を自動的に維持させたい場合は、1つの次元のみを指定するか、式を使用してください:
ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4これにより幅が640ピクセルに設定され、FFmpegはアスペクト比を保つために適切な高さを計算します。ただし、ダウンスケーリングは品質を低下させる可能性があるため、解像度を慎重に選択してください。
1. 動画のトリミングと切り抜き
動画をトリミングすることで、品質に影響を与えずに必要な部分だけを抽出できます。これは不要なイントロやアウトロ、またはミスを排除するのに最適です。
例えば、動画の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」オプションは、ビデオとオーディオが再エンコードすることなくコピーされることを保証し、プロセスをはるかに速くし、元の品質を保持します。
トリミングは、不要なエッジを取り除いたり、ビデオの最も重要な部分にズームインしたりします。ビデオを640x480ピクセルにトリミングするには、左上隅から始めて、次のように実行します:
ffmpeg -i input.mp4 -vf "crop=640:480:0:0" output_cropped.mp4クロップフィルターは、幅、高さ、クロップを開始するxおよびy座標の4つの値を取ります。この場合、幅と高さは640x480に設定されており、0:0はクロップが元のビデオの左上隅から始まることを保証します。
これらのFFmpegのトリックを練習し学ぶことで、生産性を簡単に向上させ、作業負担を軽減できます。そして覚えておいてください—これはほんの始まりです。FFmpegには探求待ちの多くのものがあるので、ぜひ飛び込んで実験を続けてください!




