スクリーンキャプチャ

提供: ArchWiki
2024年4月18日 (木) 19:22時点におけるAshMyzk (トーク | 投稿記録)による版 (→‎専用のソフトウェア: 同期)
ナビゲーションに移動 検索に移動

関連記事

この記事では、スクリーンショットスクリーンキャストのソフトウェアを一覧にして解説しています。

スクリーンショットソフトウェア

専用のソフトウェア

  • CoreShot — X11 用のシンプルで軽量なスクリーンキャプチャユーティリティ。C-Suite の一部。
https://cubocore.gitlab.io/ || coreshotAUR
  • Deepin Screenshot — とても使いやすいスクリーンショットツール。現在は非推奨となっており、Deepin Screen Recorder にマージされています。クリップボード機能に関する既知の問題は deepin-screenshot-copy-patchAUR でパッチが適用されます。
https://www.deepin.org/en/original/deepin-screenshot/ || deepin-screen-recorder
  • Escrotum — Python と GTK3 が使用されているスクリーンキャプチャツール。scrot からインスパイアされています。
https://github.com/Roger/escrotum || escrotum-gitAUR
  • Flameshot — インタラクティブにスクリーンショットを撮ることができる Qt5 ベースのソフトウェア。撮りたい領域を選択して、様々なツールで落書きしたりカスタマイズする機能があります。
https://github.com/lupoDharkael/flameshot || flameshot
  • GNOME Screenshot — GNOME デスクトップ用のスクリーンショットツール。
https://gitlab.gnome.org/GNOME/gnome-screenshot/ || gnome-screenshot
  • grim — Wayland コンポジタでスクリーンショットを撮ります。
https://sr.ht/~emersion/grim/ || grim
  • gscreenshot — シンプルな GTK スクリーンショットユーティリティ。遅延撮影、領域選択、クリップボードへのコピーといった機能があります。
https://github.com/thenaterhood/gscreenshot || gscreenshotAUR
  • HotShots — 画面をキャプチャし、様々な画像フォーマットに保存するだけでなく、注釈やグラフィカルなデータ (矢印、線、テキストなど) を加えることのできるアプリケーション。
https://github.com/obiwankennedy/HotShots || hotshots-gitAUR
  • imgur-screenshot — 選択した領域のスクリーンショットを撮り、imgur にアップロードしたりできるツール。
https://github.com/jomo/imgur-screenshot || imgur-screenshotAUR
  • ksnip — Ksnip は Qt ベースのクロスプラットホームなスクリーンショットツールで、多くの注釈機能、基本的な画像編集、リモート (ftp、imgur、スクリプト) へのアップロード機能を提供します。
https://github.com/ksnip/ksnip || ksnip
  • Lightscreen — スクリーンショットの保存や整理などの面倒な処理を自動化するシンプルなツール。このツールはバックグラウンドプロセスとして動作し、ユーザーの設定に応じて1つ (または複数) のホットキーでスクリーンショットを撮り、ディスクに保存することができます。
https://lightscreen.com.ar || lightscreenAUR
  • LXQt Screenshot — LXQt 用のスクリーンショットツール。lximage-qt --screenshot で実行できます。
https://github.com/lxde/lximage-qt || lximage-qt
  • maim — スクリーンショットを撮るシンプルなコマンドラインユーティリティ。Scrot を置き換えることを目的としており、多くの点で scrot より優れています。
https://github.com/naelstrof/maim || maim
  • MATE Screenshot — MATE デスクトップ用のスクリーンショットツール。
https://mate-desktop.org || mate-utils
  • menyoki — 画像編集機能のある、コマンドラインのスクリーンショット及びスクリーンキャストツール。
https://github.com/orhun/menyoki || menyoki
  • mss — 最小限の CLI を備えた、xrandr 互換のスクリーンショット Python モジュール。
https://pypi.org/project/mss/ || python-mss
  • Pantheon Screenshot — Elementary OS のために設計されたスクリーンショットツール。
https://github.com/elementary/screenshot || pantheon-screenshot
  • ScreenCloud — 画面全体または選択したエリアのスクリーンショットを撮り、imgur+auth にアップロードできます。プラグインやシステムトレイの機能があります。
https://screencloud.net/ || screencloudAUR
  • ScreenGrab — 素早くスクリーンショットを撮るためのクロスプラットホームなアプリケーション (Qt)。
https://github.com/DOOMer/screengrab || screengrab
  • Scrot — X 用のシンプルなスクリーンショットコマンドラインユーティリティ。
https://github.com/resurrecting-open-source-projects/scrot || scrot
  • Shotgun — Rust で書かれた最小限の X スクリーンショットユーティリティ。作者によると、maim より2倍高速だそうです。
https://github.com/neXromancers/shotgun || shotgun
https://shutter-project.org/ || shutter
  • Spectacle — スクリーンショット/キャストのための KDE アプリケーション。デスクトップ全体、単一のウィンドウ、ウィンドウの一セクション、選択した矩形領域、及びフリーハンドで選択した領域を撮影することができます。kde-graphics グループの一部です。
https://github.com/KDE/spectacle/ || spectacle
  • Xfce4 Screenshooter — 画面全体、アクティブなウィンドウ、選択した領域を撮影できるアプリケーション及び Xfce4 パネルプラグイン。xfce4-goodies に含まれています。
https://goodies.xfce.org/projects/applications/xfce4-screenshooter || xfce4-screenshooter
  • xwd — X Window System の画像撮影ユーティリティ。
https://www.x.org/ || xorg-xwd

xwd

xwd(1)xorg-xwd パッケージで提供されています。

ルートウィンドウのスクリーンショットを撮るには:

$ xwd -root -out screenshot.xwd
ヒント: スクリーンショットを撮る前に時間を置くには、sleep コマンドを使うことができます。例: sleep 5; xwd ...

scrot

scrot は、CLI からスクリーンショットを撮ることができ、撮影の遅延などの機能があります。デフォルトでは、カレントディレクトリにスクリーンショットを保存します。

$ scrot -t 20 -d 5

上記のコマンドは、ウェブ投稿用にサムネイル付き (元画像の20%) の日付のつけられた .png ファイルに保存します。この例では、5秒経ってから撮影します。

ファイルへの保存時に標準的な日付と時間の形式を使うこともできます。例:

$ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png

このコマンドは、ファイル名に現在の年、月、日、時、分、そして秒を付け、ホームディレクトリ内の "screenshots" という名前のフォルダ内にスクリーンショットを保存します。

詳細は scrot(1) を参照してください。

ノート: 一部のウィンドウマネージャ (dwmAURxmonad、その他も該当する可能性あり) では、ウィンドウマネージャのキーボードショートカットから scrot -s を実行しても正しく機能しません。この問題は、scrot の実行を少し遅らせることで回避できます: sleep 0.2; scrot -s

escrotum

escrotum-gitAUR は PyGTK を使用するスクリーンキャプチャツールで、scrot からインスパイアされています。

このツールは、scrot が領域選択モードの際にリフレッシュしているウィンドウをキャプチャしようとすると問題が発生するため、開発されました。

コマンドラインインターフェイスは scrot のものとほぼ同じであるため、scort の置き換えとして利用できます。

maim

maim は scrot の改良版となることを目指しています。

全画面をキャプチャしてファイルに保存するには:

$ maim filename

領域選択の UI を表示して、ファイルに保存するには:

$ maim --select filename

アクティブなウィンドウをファイルに保存するには (xdotool がインストールされていると仮定します):

$ maim --window $(xdotool getactivewindow) filename

領域選択の UI を表示し、カーソルを除いて撮影し、クリップボードに保存するには (xclip がインストールされていると仮定します):

$ maim -s | xclip -selection clipboard -t image/png -i

デスクトップ環境固有

Spectacle

KDE を使っている場合、Spectacle を使用すると良いかもしれません。

Spectacle は spectacle パッケージで提供されています。

Xfce Screenshooter

Xfce を使っている場合 xfce4-screenshooter をインストールしてキーボードバインディングを追加することができます:

Xfce Menu > Settings > Keyboard > Application Shortcuts

Screenshot プロンプトをスキップしたい場合は、オプションのターミナルに $ xfce4-screenshooter -h と入力してください。

GNOME

GNOME ユーザーは PrintScreen を押すか、システムメニューのカメラアイコンをクリックすることで、スクリーンショットを撮ることができます。任意で、gnome-screenshot をインストールすれば、Apps > Accessories > Take Screenshot からスクリーンショットツールを開くことができます。

GNOME には、Ctrl+Shift+Alt+r を押すことで使用できる内臓のスクリーン録画ツールがあります。録画中は、画面右下の角に赤い丸が表示されます。録画が終わると、Screencast from %d%u-%c.webm という名前のファイルが Videos ディレクトリ内に作成されます。スクリーンキャスト機能を使用するには、gst-plugin-pipewire パッケージと gst-plugins-good パッケージをインストールする必要があります。

Cinnamon

デフォルトの Cinnamon 環境では、スクリーンショットユーティリティが提供されていません。gnome-screenshot をインストールすることで、Menu > Accessories > Screenshot から、または PrintScreen を押してスクリーンショットを撮ることができるようになります。

他のデスクトップ環境やウィンドウマネージャ

LXDE などの他のデスクトップ環境や、OpenboxCompiz といったウィンドウマネージャでは、先に挙げたコマンドをスクリーンショットを撮るホットキーに追加することができます。例えば:

$ import -window root ~/Pictures/$(date '+%Y%m%d-%H%M%S').png

importimagemagick パッケージに含まれています。Compiz で上記のコマンドを PrintScreen キーにに割り当てれば、日付と時間を含むファイル名でスクリーンショットを Pictures フォルダに保存することができます。 Openbox の rc.xml ファイルではコンマは認識されないことに注意してください。なので、Openbox で PrintScreen キーに先のコマンドをバインドするには、以下の記述を rc.xml ファイルの keyboard セクションに追加する必要があります:

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 でバインドできない場合は、キーボード入力 の記事を参照し、他の keysym または keycode を使ってください。

スクリーンショットユーティリティが含まれているパッケージ

ImageMagick/GraphicsMagick

ImageMagick#スクリーンショットの取得 を参照。

GIMP

GIMP を使ってスクリーンショットを取得することもできます (File > Create > Screenshot...)。

imlib2

imlib2 にはスクリーンショットを取得するためのバイナリ imlib2_grab が含まれています。フルスクリーンのスクリーンショットを撮るには:

$ imlib2_grab screenshot.png

FFmpeg

FFmpeg#スクリーンキャプチャ を参照。

スクリーンキャストソフトウェア

FFmpeg#スクリーンキャプチャWikipedia:Comparison of screencasting software も参照してください。

スクリーンキャストユーティリティは、デスクトップや個々のウィンドウのビデオを作成することができます。

  • Byzanz — GIF アニメーションを作成するシンプルなスクリーンキャスト CLI ツール。
https://gitlab.gnome.org/Archive/byzanz || byzanz
  • Deepin Screen Recorder — Deepin デスクトップ用の画面録画アプリケーション。
https://www.deepin.org/en/original/deepin-screen-recorder/ || deepin-screen-recorder
  • FFcast — Bash で書かれた FFmpeg ベースのスクリーンキャストツール。
https://github.com/lolilolicon/FFcast || ffcastAUR
  • GPU Screen Recorder — パフォーマンスを大幅に向上させるために GPU で画面を録画するスクリーンレコーダー。そのパフォーマンスは Nvidia ShadowPlay に匹敵します。ライブストリーミングや再生バッファもサポートしています。
https://git.dec05eba.com/gpu-screen-recorder-gtk/about/ || gpu-screen-recorder-gtk-gitAUR
  • Green Recorder — Linux システム用のシンプルかつ機能的なデスクトップレコーダー。
https://github.com/dvershinin/green-recorder || green-recorderAUR
  • Kazam — デザイン性を念頭に置いたスクリーンキャストプログラム。マルチスクリーンの環境でも使えます。
https://launchpad.net/kazam || kazamAUR
  • Kooha — 最小限の GTK インターフェイスを備えたシンプルなスクリーンレコーダー。
https://github.com/SeaDve/Kooha || kooha
  • menyoki — コマンドライン上でスクリーンショット/キャストを撮り、ImageOps を実行します。X11 のみですが、Wayland のサポートも計画されています。
https://github.com/orhun/menyoki || menyoki
https://obsproject.com/ || obs-studio
  • obs-gnome-screencastAUR – GNOME screencast 機能のためのプラグイン。Wayland をサポートしています。
  • Peek — GIF、APNG、WebM、MP4 のアニメーションを作成できるシンプルなスクリーンキャストツール。もはや開発されていません (2023年1月現在)。
https://github.com/phw/peek || peek
  • RecApp — GTK で書かれたユーザーフレンドリーなスクリーンキャストツール。フリーな GStreamer モジュールを使用しており、FFmpeg には依存していません。もはや開発されていません。
https://github.com/amikha1lov/RecApp || recappAUR
  • 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 デスクトップを録画するコマンドラインインターフェイス。オフライン録画とライブストリーミングの両方をサポートしています。
https://github.com/dbermond/screencast/ || screencastAUR
  • ScreencastElementary OS 用に設計されたシンプルなスクリーンキャストレコーダー。
https://github.com/artemanufrij/screencast || pantheon-screencastAUR
  • SimpleScreenRecorder — C++/Qt5 で書かれた、機能が豊富な画面録画ツール。X11 と OpenGL をサポートしています。
https://www.maartenbaert.be/simplescreenrecorder/ || simplescreenrecorderAUR
  • Spectacle — スクリーンショット/キャストのための KDE アプリケーション。Wayland でのデスクトップ全体や単一画面、単一ウィンドウの (無音声) 録画をサポートしています。kde-graphics グループの一部です。Kwin が有効化されている状態でのみ動作するため、他のウィンドウマネージャでは使用できません。
https://invent.kde.org/graphics/spectacle || spectacle
  • VokoScreen — GStreamer を使用する強力な GUI スクリーンキャストツール。数々のコーデックをサポートし、内外 (マイクロカメラとウェブカメラ) 及び画面/ウィンドウ/ビューソースの音声付きの録画、ズーム、マウス領域とボタンのハイライトが可能です。ただし、Wayland サポートは限られています。
https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html || vokoscreen
  • Wayfarer — Xorg 及び Pipewire が動作している Wayland 用の GTK4 スクリーンレコーダー。
https://github.com/stronnag/wayfarer || wayfarerAUR
  • XVidCap — 音声ナレーション付きでスクリーンキャストや X Window System の画面出力を録画できるアプリケーション。
http://xvidcap.sourceforge.net/ || xvidcapAUR[リンク切れ: package not found]

Wayland

Wlroots ベースのコンポジタでは、grimgrimshotAUR (sway-contrib パッケージも /usr/share/sway-contrib/grimshotgrimshot を提供しています) でスクリーンショットを撮ることができます。動画は、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)"
ヒント:
  • slurpshot は、bemenu を使用するインタラクティブなスクリーンショットスクリプトです。
  • swappy などの、スクリーンショット後に画像の編集・描画ツールを使うには: grim -g "$(slurp)" - | swappy -f -

また、上記の一部のプログラムは Wayland でのみ動作します (例: ksnipgreen-recorderAUR)。

スクリーンキャスト

GNOME screencast を使う

green-recorderAURobs-gnome-screencastAUR、及び obs-studio は、GNOME screencast 機能を使用した Wayland での画面録画をサポートしています。

Hyprland を使う

Hyprland ウィンドウマネージャでは、xdg-desktop-portal-hyprland を使用している場合、OBS でスクリーンキャストと録画を行うことができます (個々のウィンドウやワークスペースの選択も可)。[1]

仮想 Web カメラのビデオフィードを使う

v4l2loopback#wf-recorder を使って Wayland をキャストする を参照してください。

ヒント:
  • この方法は、zoomAUR デスクトップクライアントを xorg-xwayland で動作させたケースと、BigBlueButtonchromium 内で動作させたケース (firefox では解像度が低い) でテストされました。skypeforlinux-binAUR は、仮想ビデオデバイス VirtualVideoDevice を検出しますが、空の画面しか出力しません。
  • この例では wf-recorder を使用していますが、その他のソフトウェアも使用できます。単に出力を仮想デバイスに流すだけです。

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]

ヒント: Unknown V4L2 pixel format equivalent for rgb0 というエラーが発生する場合は、--force-yuv または -t を付けて wf-recorder を実行して、データを GPU に送る前に強制的に yuv フォーマットに変換してください。[3]

これで、先の仮想ビデオデバイスをビデオ通話/ビデオ会議アプリケーションで "ウェブカメラ" として選択できるようになりました (デバイスは VirtualVideoDevice という名前です)。仮想ビデオデバイスがきちんとスクリーン共有を出力していることは、ffplay (ffmpeg の一部) や mpvgst-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 プロトコルを使う

ノート: この方法では出力全体しか共有できず、個々のアプリケーションを共有することはできません。[4]

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 を使う必要があります。

フレームバッファ

何かしらのフレームバッファをインストールして、fbgrabfbdumpAUR を使用してスクリーンショットを撮ることができます。

仮想コンソール

スクリーンショット

単にコンソールの文章を取得したいだけで実際の画像は要らない場合、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 アカウント上の録画ファイルを管理

トラブルシューティング

スクリーンショットで古い画面の状態が使われる

KDE#Spectacle のスクリーンショットでスクリーンの古い状態が使われてしまう を参照。