スクリーンキャプチャ
関連記事
この記事では、スクリーンショットとスクリーンキャストのソフトウェアを一覧にして解説しています。
スクリーンショットソフトウェア
専用のソフトウェア
- CoreShot — X11 用のシンプルで軽量なスクリーンキャプチャユーティリティ。C-Suite
- Deepin Screenshot — とても使いやすいスクリーンショットツール。機能: スクリーンショットツールを発動するホットキー、選択した領域のスクリーンショットの取得、スクリーンショットに文章や線画を簡単に追加。Python/Qt5 ベース。
- Escrotum — pygtk を使用して画面をキャプチャ。scrot の影響を受けています。
- Flameshot — インタラクティブにスクリーンショットを取得できる Qt5 ベースのソフトウェア。取得したいエリアを選択して様々なツールで落書きしたりカスタマイズする機能があります。
- gnome-screenshot — dconf, gtk3, libcanberra にしか依存しないため GNOME 以外でも使えます。
- gscreenshot — シンプルな GTK スクリーンショットユーティリティ。遅延時間を設定したり範囲選択・クリップボードにコピーする機能があります。
- imgur-screenshot — スクリーンショットを取得して imgur にアップロードするツール。
- KShare — ShareX の影響を受けているクロスプラットフォームのユーティリティ。Qt で書かれています。
- Lightscreen — 退屈なスクリーンショットの保存とカタログ化を自動化するシンプルなツール。表には現れないバックグラウンドプロセスとして動作し、(複数の) ホットキーで呼び出してスクリーンショットファイルをユーザーの設定にあわせてディスクに保存する。
- maim — スクリーンショットを取得するシンプルなコマンドラインユーティリティ。scrot を置き換えるものとして様々な点で scrot よりも優れています。
- screencloud — 画面全体のスクリーンショットや領域を選択して撮影し、imgur+auth にスクリーンショットをアップロードできるツール。プラグインとシステムトレイが付属。
- screengrab — スクリーンショットを手軽に取得するためのクロスプラットフォームのアプリケーション (Qt)。
- Scrot — X 向けのシンプルなコマンドラインスクリーンショットユーティリティ。
- Shutter — リッチなスクリーンショット・編集プログラム。
- Spectacle — スクリーンショットを撮るための KDE のアプリケーション。デスクトップ全体、単一のウィンドウ、ウィンドウの一部、四角形またはフリーハンドで指定した領域の画面をキャプチャすることができます。kdegraphics[リンク切れ: パッケージが存在しません] に含まれています。
- Xfce4 Screenshooter — 画面全体、アクティブウィンドウ、または選択領域のキャプチャを行えます。スクリーンショットを撮るまでの待機時間とスクリーンショットを撮った後の動作を設定できます: PNG ファイルに保存、クリップボードにコピー、別のアプリケーションで開く、無料の画像ホスティングサービスである Imgur や ZimageZ にアップロード。xfce4-goodies に含まれています。
- xwd — X Window System イメージダンプユーティリティ。
xwd
xwd(1) is provided by xorg-xwd.
ルートウィンドウのスクリーンショットを撮るには:
$ xwd -root -out screenshot.xwd
scrot
scrot を使用すると、CLI からスクリーンショットを取得できるようになり、ユーザー定義可能な遅延時間などの機能が提供されます。特に指示がない限り、ファイルは現在の作業ディレクトリに保存されます。
$ scrot -t 20 -d 5
上記のコマンドは、Web 投稿用にサムネイル (元の 20%) とともに日付付きの .png ファイルを保存します。この場合、キャプチャする前に 5 秒の遅延を発生させます。
ファイルに保存するときに、標準の日付と時刻の書式設定を使用することもできます。例えば、
$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png
スクリーンショットを現在の年、月、日、時、分、秒を含むファイル名でホーム ディレクトリ内の "screenshots" というフォルダーに保存します。
詳細については、scrot(1) を参照してください。
escrotum
escrotum-gitAUR scrot からインスピレーションを得た、PyGTK を使用した画面キャプチャ
ウィンドウを更新して選択モードを使用すると scrot に不具合が生じるため作成されました。
コマンドラインインターフェイスは scrot とほぼ同じなので、代替として使用できます。
maim
maim は、改善された scrot であることを目指しています。
全画面をファイルに保存します。
$ maim filename
選択を求めてからファイルに保存します。
$ maim --select filename
xdotool がインストールされていると仮定して、アクティブなウィンドウをファイルに保存します。
$ maim --window $(xdotool getactivewindow) filename
xclip がインストールされていると仮定して、選択を求め、カーソルを使用せずに保存し、クリップボードに保存します。
$ maim -s | xclip -selection clipboard -t image/png -i
デスクトップ環境による方法
Spectacle
KDE を使っている場合、Spectacle
を使用すると良いでしょう。Prnt Scr
で使うことができます。
Spectacle は spectacle に入っています。
Xfce Screenshooter
Xfce を使っている場合 xfce4-screenshooter をインストールしてキーボードバインディングを追加することができます:
Xfce Menu > Settings > Keyboard > Application Shortcuts
Screenshot プロンプトをスキップしたい場合は、オプションのターミナルに $ xfce4-screenshooter -h
と入力してください。
GNOME
GNOME ユーザーは Prnt Scr
を押すか Apps > Accessories > Take Screenshot でスクリーンショットが取れます。gnome-screenshot をインストールする必要があります。
Cinnamon
Cinnamon はデフォルトでスクリーンショットユーティリティがインストールされません。gnome-screenshot をインストールするとスクリーンショットが有効になり、Menu > Accessories > Screenshot または Prnt Scr
を押すことで撮影できるようになります。
他のデスクトップ環境やウィンドウマネージャ
LXDE などのデスクトップ環境や Openbox や Compiz などのウィンドウマネージャの場合、上述のコマンドをホットキーに追加してスクリーンショットを撮影することができます。例えば:
$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png
上のコマンドを Prnt Scr
キーに追加すれば Compiz でスクリーンショットを取得して Pictures フォルダに日付を付けて保存できます。Openbox の rc.xml
ファイルではコンマを使えないので、Openbox でこのコマンドを Prnt Scr
キーに指定するには、rc.xml
ファイルのキーボードセクションに以下を追加する必要があります:
rc.xml
<!-- Screenshot --> <keybind key="Print"> <action name="Execute"> <command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command> </action> </keybind>
上記の Print
が動作しない場合、特別なキーボードキーをみて、別のキーシムやキーコードを使って下さい。
LXDE などのデスクトップ環境や Openbox や Compiz などのウィンドウマネージャの場合、上述のコマンドをホットキーに追加してスクリーンショットを撮影することができます。例えば:
$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png
上のコマンドを Prnt Scr
キーに追加すれば Compiz でスクリーンショットを取得して Pictures フォルダに日付を付けて保存できます。Openbox の rc.xml
ファイルではコンマを使えないので、Openbox でこのコマンドを Prnt Scr
キーに指定するには、rc.xml
ファイルのキーボードセクションに以下を追加する必要があります:
rc.xml
<!-- Screenshot --> <keybind key="Print"> <action name="Execute"> <command>sh -c "import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png"</command> </action> </keybind>
上記の Print
が動作しない場合、特別なキーボードキーをみて、別のキーシムやキーコードを使って下さい。
スクリーンショットユーティリティが含まれているパッケージ
ImageMagick/GraphicsMagick
GIMP
GIMP を使ってスクリーンショットを取得することもできます (File > Create > Screenshot...)。
imlib2
imlib2 にはスクリーンショットを取得するためのバイナリ imlib2_grab
が含まれています。フルスクリーンのスクリーンショットを撮るには:
$ imlib2_grab screenshot.png
FFmpeg
FFmpeg#スクリーンキャプチャ を参照。
スクリーンキャストソフトウェア
FFmpeg#スクリーンキャプチャ と Wikipedia:Comparison of screencasting software も参照してください。
スクリーンキャストユーティリティは、デスクトップや個々のウィンドウのビデオを作成することができます。
- Byzanz — GIF アニメーションを作成するシンプルなスクリーンキャスト CLI ツール。
- Deepin Screen Recorder — Deepin デスクトップ用の画面録画アプリケーション。
- FFcast — Bash で書かれた FFmpeg ベースのスクリーンキャストツール。
- GPU Screen Recorder — パフォーマンスを大幅に向上させるために GPU で画面を録画するスクリーンレコーダー。そのパフォーマンスは Nvidia ShadowPlay に匹敵します。ライブストリーミングや再生バッファもサポートしています。
- Green Recorder — Linux システム用のシンプルかつ機能的なデスクトップレコーダー。
- Kazam — デザイン性を念頭に置いたスクリーンキャストプログラム。マルチスクリーンの環境でも使えます。
- Kooha — 最小限の GTK インターフェイスを備えたシンプルなスクリーンレコーダー。
- menyoki — コマンドライン上でスクリーンショット/キャストを撮り、ImageOps を実行します。X11 のみですが、Wayland のサポートも計画されています。
- Open Broadcaster Software — 録画及びライブストリーミングのためのアプリケーション。
- https://obsproject.com/ || obs-studio
- obs-gnome-screencastAUR – GNOME screencast 機能のためのプラグイン。Wayland をサポートしています。
- Peek — GIF、APNG、WebM、MP4 のアニメーションを作成できるシンプルなスクリーンキャストツール。もはや開発されていません (2023年1月現在)。
- RecApp — GTK で書かれたユーザーフレンドリーなスクリーンキャストツール。フリーな GStreamer モジュールを使用しており、FFmpeg には依存していません。もはや開発されていません。
- RecordItNow — KDE 4 のためのプラグインベースのデスクトップレコーダー。
- http://recorditnow.sourceforge.net/ || recorditnowAUR[リンク切れ: package not found]
- RecordMyDesktop — デスクトップを録画して ogg 形式に落とす、簡単に使えるユーティリティ。CLI、GTK、Qt のインターフェイスを利用可能。(開発は活発ではありません)
- https://recordmydesktop.sourceforge.net/ || CLI: recordmydesktop、GTK: gtk-recordmydesktopAUR、Qt: qt-recordmydesktopAUR[リンク切れ: package not found]
- screencast — FFmpeg で X11 デスクトップを録画するコマンドラインインターフェイス。オフライン録画とライブストリーミングの両方をサポートしています。
- Screencast — Elementary OS 用に設計されたシンプルなスクリーンキャストレコーダー。
- SimpleScreenRecorder — C++/Qt5 で書かれた、機能が豊富な画面録画ツール。X11 と OpenGL をサポートしています。
- Spectacle — スクリーンショット/キャストのための KDE アプリケーション。Wayland でのデスクトップ全体や単一画面、単一ウィンドウの (無音声) 録画をサポートしています。kde-graphics グループの一部です。Kwin が有効化されている状態でのみ動作するため、他のウィンドウマネージャでは使用できません。
- VokoScreen — GStreamer を使用する強力な GUI スクリーンキャストツール。数々のコーデックをサポートし、内外 (マイクロカメラとウェブカメラ) 及び画面/ウィンドウ/ビューソースの音声付きの録画、ズーム、マウス領域とボタンのハイライトが可能です。ただし、Wayland サポートは限られています。
- Wayfarer — Xorg 及び Pipewire が動作している Wayland 用の GTK4 スクリーンレコーダー。
- XVidCap — 音声ナレーション付きでスクリーンキャストや X Window System の画面出力を録画できるアプリケーション。
- http://xvidcap.sourceforge.net/ || xvidcapAUR[リンク切れ: package not found]
Wayland
Wlroots ベースのコンポジタでは、grim や grimshotAUR (sway-contrib パッケージも /usr/share/sway-contrib/grimshot
で grimshot を提供しています) でスクリーンショットを撮ることができます。動画は、wf-recorder (または wf-recorder-gitAUR) で撮ることができます。さらに、wlrobs-hgAUR は、wlroot ベースのコンポジタでのスクリーンキャプチャーを可能にする obs-studioプラグインです。また任意で、キャプチャする画面領域を選択するために slurp を使用できます。GPU が VA-API エンコードをサポートしている場合、wf-recorder の代わりに wl-screenrec-gitAUR を使えば、より高速に動作する可能性があります。
画面全体のスクリーンショットを撮る:
$ grim screenshot.png
Sway で現在のウィンドウのスクリーンショットを撮る:
$ swaymsg -t get_tree | jq -r '.. | select(.focused?) | .rect | "\(.x),\(.y) \(.width)x\(.height)"' | grim -g - screenshot.png
Hyprland で現在のウィンドウのスクリーンショットを撮る:
$ hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -g - screenshot.png
画面の一部のスクリーンショットを撮る:
$ slurp | grim -g - screenshot.png
画面の一部のスクリーンショットを攝り、wl-clipboard を使ってクリップボートに貼り付ける:
$ slurp | grim -g - - | wl-copy
画面全体の動画を撮る:
$ wf-recorder -f recording.mp4
画面の一部の動画を撮る:
$ wf-recorder -g "$(slurp)"
また、上記の一部のプログラムは Wayland でのみ動作します (例: ksnip、green-recorderAUR)。
スクリーンキャスト
GNOME screencast を使う
green-recorderAUR、obs-gnome-screencastAUR、及び obs-studio は、GNOME screencast 機能を使用した Wayland での画面録画をサポートしています。
Hyprland を使う
Hyprland ウィンドウマネージャでは、xdg-desktop-portal-hyprland を使用している場合、OBS でスクリーンキャストと録画を行うことができます (個々のウィンドウやワークスペースの選択も可)。[1]
仮想 Web カメラのビデオフィードを使う
v4l2loopback#wf-recorder を使って Wayland をキャストする を参照してください。
wf-recorder (または wf-recorder-gitAUR) および v4l2loopback-dkms をインストールしてください。そして、以下のパラメータを指定して v4l2loopback
カーネルモジュールをロードしてください:
# modprobe v4l2loopback exclusive_caps=1 card_label=VirtualVideoDevice
新しい仮想ビデオデバイス VirtualVideoDevice
が作成されたことを確認してください:
$ v4l2-ctl --list-devices
... VirtualVideoDevice (platform:v4l2loopback-000): /dev/video2 ...
wf-recorder
で画面の録画を開始し、v4l2loopback
によって作成された新しい仮想ビデオデバイス VirtualVideoDevice
に出力を送ってください:
$ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p
ここで yuv420p
色空間を使用しているのは、映像出力に Zoom との互換性を持たせるためです。[2]
これで、先の仮想ビデオデバイスをビデオ通話/ビデオ会議アプリケーションで "ウェブカメラ" として選択できるようになりました (デバイスは VirtualVideoDevice
という名前です)。仮想ビデオデバイスがきちんとスクリーン共有を出力していることは、ffplay
(ffmpeg の一部) や mpv、gst-launch
(gstreamer の一部) を使用して確認できます:
$ ffplay /dev/video2
$ mpv av://v4l2:/dev/video2
$ gst-launch-1.0 -v v4l2src device=/dev/video2 ! glimagesink
Firefox がビデオストリームを読み取ることができず、"AbortError: Starting video failed" のようなメッセージを出力する場合、v4l2compat.so
をプリロードしてみてください:
$ LD_PRELOAD=/usr/lib/v4l1compat.so firefox
個々のアプリケーションの共有
先に説明した通り、wf-recorder
は、slurp で事前に選択した画面領域のみを録画することができます。この機能を使って、特定の領域/アプリケーションウィンドウを共有して仮想ビデオデバイスに出力を流すには、以下のコマンドで画面の録画を開始してください:
$ wf-recorder -g "$(slurp)" --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p
画面の領域を選択したら、先に説明したように仮想ビデオデバイス /dev/video2
経由でビデオフィードにアクセスできるようになります。
WebRTC プロトコルを使う
PipeWire#WebRTC 画面共有 を参照してください。
Chromium と Firefox は画面共有にアクセスできるはずです。Mozilla の getUserMedia / getDisplayMedia テストページでテストできます。
X11 アプリケーションで Wayland ウィンドウをスクリーンキャストする
ネイティブな Wayland ウィンドウ (あるいはスクリーン/ワークスペース全体) は X11 アプリケーションに共有することができます。そのためには xwaylandvideobridge アプリケーションを使う必要があります。詳細は Fixing Wayland: Xwayland screen casting を見てください。
ターミナル
ANSI コードでキャプチャする
util-linux パッケージに含まれている、script(1) コマンドを使うことができます。script
を実行すればその瞬間から、全ての出力は (ANSI コードを含めて) typescript
ファイルに保存されるようになります。
終わったら、exit
と入力するだけで typescript
が作成されます。作成されたファイルは ansi2htmlAUR パッケージを使って HTML に変換できます (python-ansi2html の ansi2html と混同しないように)。
typescript
ファイルを typescript.html
に変換するには、次を実行:
$ ansi2html --bg=dark < typescript > typescript.html
また、コマンドによっては直接 ansi2html にパイプで渡すこともできます:
$ ls --color|ansi2html --bg=dark >output.html
これはどんなコマンドでも使えるというわけではないので、その場合は、script
を使う必要があります。
フレームバッファ
何かしらのフレームバッファをインストールして、fbgrab か fbdumpAUR を使用してスクリーンショットを撮ることができます。
仮想コンソール
スクリーンショット
単にコンソールの文章を取得したいだけで実際の画像は要らない場合、util-linux パッケージに含まれている setterm
を使うことができます。以下のコマンドは仮想コンソール 1 のテキストをカレントディレクトリの screen.dump
ファイルに保存します:
# setterm -dump 1 -file screen.dump
/dev/vcs1
の中身を読まないといけないので root 権限が必要です。
コンソールのスクリーンキャスト
asciinema は、ターミナルセッションのアクティビティ全体を録画することができます。結果は、asciinema 独自の (オープンな) 形式でファイルに保存されます。このファイルは同ツールまたはツールの HTML5 バージョンで再生でき、このツールの公式ウェブサイト asciinema.org で共有することができますし、あるいは HTML バージョンを自身でホストして共有することもできます。
使用方法は asciinema(1) や asciinema --help
で確認できます。
asciinema rec output.cast
はセッションを録画し、Ctrl+\
でポーズ/再開、Ctrl-d
/またはセッションを終了することで録画を停止できます。出力ファイル名は省略可能です。
録画に関する有用な引数:
-c command
: 特定のコマンドのアクション/出力だけを録画したい場合-i 1.2
: 1.2 秒だけ録画-t "beautiful title"
: ターミナルキャストにタイトルを追加
録画以外の機能:
asciinema play file.cast
: asciinmea ファイルを再生asciinema upload file.cast
: ファイルを asciinema.org にアップロードして共有asciinema auth
: asciinema.org アカウント上の録画ファイルを管理