4
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

ffmpegでサクッとデスクトップキャプチャ(音声も!)

概要

ffmpegを使ってサクッとデスクトップ画面+音声をキャプチャしてファイルに保存します。実行環境はWindows 10を想定しています。

デスクトップをキャプチャする

ffmpegではgdigrab(Linuxではx11grab)を使うことでデスクトップ画面をキャプチャできます。

ffmpeg -video_size 1920x1080 -framerate 30 -f gdigrab -i desktop -vcodec libx264 -pix_fmt yuv420p desktop.mp4

オプションの解説

video_size

無指定だと画面全体をキャプチャします。このオプションを指定すると画面の左上を基準に指定した範囲をキャプチャします。

framerate

キャプチャ動画のフレームレートを指定します。

f, i

-fオプションにgdigrabまたはx11grabを指定し、-iオプションにdesktopを指定することでデスクトップ画面をエンコードの入力映像として指定します。

vcodec

出力ファイルのコーデックを指定します。画面キャプチャはリアルタイムでの処理が要求されるため、出力設定にはPCのスペックに見合ったものを指定する必要があります。最新のデスクトップPCならばlibx264コーデックでフルHD解像度ならば処理は可能かと思います。PCの性能に不安があったり、出力動画がカクつく場合は、-presetオプションでエンコードの負荷を下げたり、-sオプションで出力解像度を下げたり、-rオプションでフレームレートを下げることで負荷を下げることができます。

pix_fmt

このオプションにはyuv420pを指定することで再生可能な動画プレイヤーソフトが増えます。無指定の場合、VLC Media Playerでは再生可能でしたが、Windows10標準の「映画&テレビ」アプリでは黒画面となってしまいました。

デスクトップ音声をキャプチャする

先程の例でデスクトップ画面をキャプチャすることはできましたが、音声はキャプチャできていませんでした。音声はdshowを使うことでキャプチャできます。

まずは、音声のみをキャプチャしてみましょう。

ffmpeg -f dshow -i audio="ステレオ ミキサー (Realtek(R) Audio) " -acodec aac audio.m4a

オプションの解説

f, i

-fオプションでdshowを指定し、-iオプションにはaudio="<キャプチャしたい音声デバイス>"を指定します。音声デバイスの名称は各々のPCによって異なるため、環境に合わせたものを指定しましょう。

どうやって調べるか分からないよ!という方は、VLC Media Playerを起動して、「メディア -> キャプチャーデバイスを開く」で表示されたダイアログからオーディオデバイスを選択し、ダイアログ下部の詳細設定オプションの表示にチェックを入れると、オプションの編集欄に音声デバイス名が表示されるので、それをコピペすると良いです。

音声デバイス名の確認

acodec

今回は音声コーデックにaacを指定しています。音声のみをキャプチャする場合は出力ファイルの拡張子から自動設定されるため、無指定でも構いません。

b:a

今回は指定していませんが、-b:a 256kなどと指定すると出力ファイルの音声ビットレートを設定できます。

音声付きでデスクトップ画面をキャプチャする

画面のみのキャプチャ、音声のみのキャプチャを組み合わせることで音声付きでデスクトップ画面をキャプチャできます。

ffmpeg -video_size 1920x1080 -framerate 30 -f gdigrab -i desktop -f dshow -i audio="ステレオ ミキサー (Realtek(R) Audio)" -vcodec libx264 -pix_fmt yuv420p -acodec aac -map 0:v:0 -map 1:a:0 desktop.mp4

このコマンドのキモはmapオプションを使用していることです。これを設定することで別々の入力である動画と音声を一つの出力に組み合わせることができます。

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?