試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

OpenGLアプリケーションが快適にキャプチャできるglcについて(概要/インストール)

  1. 概要
  2. インストール

概要

recordMyDesktopでX Window System上の操作を動画に記録する」で扱っているrecordMyDesktopは、「recordMyDesktopの追加メモ(2009/4/21現在)」にも書いているようにOpenGLを用いたアプリケーションのスクリーンキャストを正しくキャプチャするためには内部的に画面全体のキャプチャを行う必要があり、動作は非常に重くなる上に滑らかにキャプチャすることは困難となるが、glc(github.com/nullkey/glc/wiki)というキャプチャツールはOpenGLアプリケーションのキャプチャに特化していて、音声もALSAサウンドシステムに対応したアプリケーションであれば基本的にキャプチャできる。また、アプリケーション側が出力するオーディオ形式(サンプリング周波数やチャンネル数)を出力オーディオに反映している。*1
ただし、GUIはないので端末からコマンドを実行する必要がある。

インストール

公式のインストール方法に関するページではGentoo Linux向けのパッケージが(Overlayとして)利用可能だが、2009年8月の時点ではそれ以外のほとんどのディストリにはパッケージがない。
そこでMandriva Linux向けにパッケージを作成し、別館の配布ページに公開した。
(2014/10/12)配布ページは削除済み。
ソースRPMのビルドには

  • cmake
  • mesagl-devel [lib(64)mesagl1-devel]
  • libx11-devel [lib(64)x11_6-devel]
  • libxxf86vm-devel [lib(64)xxf86vm-devel]
  • libpng-devel [lib(64)png-devel]
  • libalsa-devel [lib(64)alsa2-devel]

が必要。更にx86_64版では以下の作業を行ってリンク時にx86_32版の.soファイルを正しく参照できるようにする。*2

$ cd /usr/lib/
$ sudo ln -s libGL.so{.1,}
$ sudo ln -s libasound.so{.2,}
$ sudo ln -s libXxf86vm.so{.1,}
$ sudo ln -s libX11.so{.6,}
$ sudo ln -s libpng.so{.3,}
$ cd -

Debian/Ubuntu上で手動ビルドする場合は以下のパッケージが必要。

  • build-essential
  • cmake
  • libgl1-mesa-dev
  • libasound2-dev
  • libxxf86vm-dev
  • libx11-dev
  • libpng12-dev

x86_64版では更に「gcc-multilib」をインストール後、上のMandriva Linuxの例と同様に/usr/lib32/内で5つのシンボリックリンクを作成する(公式のインストール方法に関するページを参照)。
他のディストリでは公式のインストール方法に関するページにあるビルドスクリプトglc-build.shを用いることによりビルドとインストールが行える。
途中でインストール先を入力するが、ここでは一般ユーザ権限で書き込める場所[ホームディレクトリ]/glc/へインストールするものとする。

$ wget https://raw.githubusercontent.com/nullkey/glc/master/scripts/glc-build.sh
$ chmod +x glc-build.sh
$ ./glc-build.sh       
info  : Welcome to glc install script!
        Enter path where glc will be installed.
          (leave blank to install to root directory)
      > (「/home/[ユーザ名]/glc」を入力してEnter)
        Enter compiler optimizations.
          (-O2 -msse -mmmx -fomit-frame-pointer)
      > (必要に応じてコンパイラオプションを指定、そのままEnterでもOK)
        Use git (y/n)
          (git contains latest unstable development version)
      > (「y」を入力)

(2014/10/12)githubからの入手に合わせて操作を修正・ただしgitも必要
これで無事にビルドが終了すると[ホームディレクトリ]/glc/以下へ各種ファイルが配置されるのだが、glcは幾つかの共有オブジェクト(動的リンクライブラリ)を含んでいるため、これらが実行時に見つけられるようにするために

$ LD_LIBRARY_PATH=${HOME}/glc/lib32:${HOME}/glc/lib64/ ~/glc/bin/glc-capture [引数...]

のようにして実行する。これが面倒であれば、別の[ホームディレクトリ]/bin/以下などに下のようなスクリプトを配置して環境変数PATHに「/home/[ユーザ名]/glc/bin」を含めておく。
[任意]ファイル名: ~/bin/glc-capture-wrapper

#! /bin/sh
LD_LIBRARY_PATH=${HOME}/glc/lib32:${HOME}/glc/lib64/ ~/glc/bin/glc-capture ${@}

[任意]ファイル名: ~/bin/glc-play-wrapper

#! /bin/sh
LD_LIBRARY_PATH=${HOME}/glc/lib32:${HOME}/glc/lib64/ ~/glc/bin/glc-play ${@}

(2014/10/12)公式のURLが変更されているのに伴って幾つかのURLを修正

関連URL:

使用したバージョン:

*1:アプリケーション側がモノラル出力なら出力ファイルのオーディオもモノラル、アプリケーション側が22050Hzのサンプリング周波数だと出力ファイルのオーディオも22050Hzといった感じ

*2:x86_32版の開発パッケージはファイル衝突のためにそのままではインストールできないための措置