Ubuntu/ArchLinuxで画面キャプチャ(jpg/png/mp4/gif)

久々に画面キャプチャしようとしたらやり方がわからなかったのでメモ。
たくさんツールはあると思うので、一例でしかない。

環境

以下のOSでの方法。

  • Ubuntu 16.04
  • ArchLinux

なおUbuntu(というかDebian)では現在、パッケージ管理のコマンドとして apt-get ではなく apt を使う方がいいらしい。
でも apt-get でやってしまったのでそのまま書く。

静止画(jpg/png)

GIMPを使う。
これでjpg形式やpng形式にできる。
スクショを撮るためにGIMPを入れるのはけっこう間違ってるが、たまたま入ってたのでこれを使う。
なおUbuntuでは普通にPrintScreenを押せば撮れる。

インストール

  • Ubuntu
    $ sudo apt-get install gimp
    
  • ArchLinux
    $ sudo pacman -S gimp
    

使い方

  1. GIMP起動
  2. 「ファイル」 -> 「画像の生成」 -> 「スクリーンショット」
    キャプチャ範囲などが選択できる。これでキャプチャするとすぐGIMPに取り込まれて編集可能になる。
  3. 「ファイル」 -> 「エクスポート」
    普通に「保存」だとxcf形式とかになってしまう。jpgなどにするにはエクスポートを選択。

動画(mp4/gif)

SimpleScreenRecorderを使う。
これでmp4形式などにできる。

SimpleScreenRecorderではなぜかgif形式での録画に失敗したので、いったんmp4で録画し、FFmpegで変換してgifにした。

インストール

公式のダウンロード方法に書いてある。

  • Ubuntu
    SimpleScreenRecorderは17.04以降では公式リポジトリに入っているようだが、それ以前では以下のようにPPA追加してからインストール。

    $ sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder
    $ sudo apt-get update
    $ sudo apt-get install simplescreenrecorder
    # FFmpegを入れる場合は以下もやる
    $ sudo apt-get install ffmpeg
    
  • ArchLinux
    $ sudo pacman -S simplescreenrecorder
    # FFmpegを入れる場合は以下もやる
    $ sudo pacman -S ffmpeg
    

使い方

SimpleScreenRecorder

SimpleScreenRecorderはツールチップがわりと親切なので、それを参考に設定する。

  1. SimpleScreenRecorder起動
  2. キャプチャ範囲などの設定をする
    「任意の矩形を録画」を選択すれば、自由に矩形範囲を指定してキャプチャするか、ウィンドウをキャプチャするか選べる。
    ウィンドウをキャプチャするときは、ウィンドウ選択時にウィンドウの枠をクリックすると枠を含めたウィンドウ全体がキャプチャされる。内部をクリックすると枠はキャプチャされない。(ということがツールチップに書いてある。)
    解像度が高いときなどは動画サイズが大きくなってしまうので「映像をリサイズ」で小さくした方がいい。
  3. 保存場所・コンテナ・コーデックなどの設定をする
    コンテナはMP4などを選ぶ。
    「その他」を選ぶとgifやflvなどたくさん選択肢があるが、gifではなぜかうまく録画ができなかった。
    他はデフォルトにした。(コーデックはH.264、プリセットはsuperfast。)
  4. 録画
    「録画を開始」を押すかホットキー(デフォルトはCtrl + r)で開始。終了は「録画を中断」か同じホットキー。
    「録画を保存」するのを忘れない。

FFmpeg

SimpleScreenRecorderでgif形式にできなかったので、FFmpegでmp4をgifに変換する。

$ ffmpeg -i input.mp4 output.gif

サイズを小さくしたいときはフレームレートを変えるのがいいよう。
これはrオプションで数値指定。小さいほどフレームレートも小さい。
ffmpeg -i input.mp4 -r 5 output.gif のように使う。これでサイズを小さくできるが、当然カクつく。

参考

Windows10更新したら画面真っ黒になってgrub rescueが出た

Windows10を更新したらgrubで起動しなくなった件。なんかよくわからんが、Windowsが勝手にパーティション切ったらしい。

grub rescue出現

自作PCはUbuntuとWindows10のデュアルブートで、今回Windows10を起動しようとしたらログイン前に更新し始めたので待った。この更新は結構長かったので、Anniversary Updateというやつだったのかもしれない。とにかくこの更新中に何回か再起動するのだが、再起動するとブートローダのgrubがおかしくなっていた。いつもは紫色の画面(Ubuntuで入れたから)になって起動するOSを選択させてくれるのに、真っ黒な画面でgrub rescue>という味も素っ気もないプロンプトを出すようになった。exitquitshutdownも、補完すら利かないパンクなシェル。

起動方法(その場しのぎ)

grubのシェルはほとんどいじったことがない(いじりたくない)ので焦った。調べるとWindows10の更新でこうなる人は多いようで、情報はそれなりにあった。ありがたい。
結局対処法は簡単で

ls

とやって出たパーティションたちのどれにbootがあるか、一つ一つ調べていけばいい。例えば(hd0,msdos3)がbootを持つか調べたいときは

ls (hd0,msdos3)/boot

みたいな感じだ。これでなにやらごちゃごちゃ出るものがbootのあるパーティション。補完ができないので面倒なこと甚だしいが、やるしかない。
(ただし、人によってはこのコマンドで何も出てこないこともあるようだ。そのときはLiveUSBとか作ってLinuxを起動して調べないといけないっぽい。)

さてbootのあるパーティション(ここでは(hd0,msdos3)とする)が見つかったら、grubがそこを見るようにすればいい。これはsetというコマンドがあり、引数なしで入力すると現在の値が見れる。今回大事なのはprefixで

set prefix=(hd0,msdos3)/boot/grub

のようにして設定できる。これでgrubに正しいブート位置を教えることができた。あとは

insmod normal
normal

と打って、grubをノーマルモードにする。これでいつものgrubの画面に戻る。そしてOS選択して、ちゃんと起動できるようになる。

修正方法

上の方法でやっても、次回起動時にはまた同じことが起きる。setしてもgrubの設定はその1回限り変わるだけだからだ。設定を恒久的に変えるにはgrubの設定ファイルを更新し、インストールし直さないといけない。grubの設定ファイルは/boot/grub/grub.cfgで、たしかにファイル内にはhd0がどうこうという部分があり、ここでbootを指定しているようだ。だがファイルの冒頭に”DO NOT EDIT THIS FILE”と素敵なことが書いてある。このファイルは直接編集するものではなく、/etc/default/grubから生成するものだからだ。実は今回は何も編集しなくていい。

# update-grub

とすれば勝手にbootがどこにあるか探して、/boot/grub/grub.cfgを適切に変更してくれる。あとは

# grub-install /dev/sda

でその設定が反映される。/dev/sdaのところはブートローダを入れたいストレージを入れる。(lsblkとかgpartedとかで調べられる。)

なお、update-grubがないディストリビューションもある。そもそもupdate-grubは特別なものではなく、

$ cat $(which update-grub)

とすれば

#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

となり、grub-mkconfigしているだけだとわかる。なのでそうすればいいんじゃないかな……実際に試してないのでよくわからん。

参考

windows10アップデートでデュアルブートマシンが起動不能になった話
boot – Windows 10 upgrade lead into grub rescue – Ask Ubuntu