totemのプラグインを自作?

2010/08/05未分類import
totemというのはUNIX系のOSで(というかGNOMEで)採用されている動画プレイヤーです.
こいつの視覚エフェクト(visualization)を自作したいと思っています.
目標は下のようにスペクトログラムを表示すること.
Windows MedhiaPlayerには外部プラグインでこれがあるんですけど,Linux上のものにはないようなので.

WMP-スペクトログラム.png


けど,できるかどうかは不明です.
とりあえず,プラグイン関連のパッケージを導入しました.
どうやら,libvisualっていうフレームワークを使っているようですのでそれを.
一番上のlibvisual-0.4-0っていうのは元から入っています.
BigOwl:~# aptitude search libvisual
i A libvisual-0.4-0                                               - Audio visualization framework
i   libvisual-0.4-dev                                             - Audio visualization framework (development package)
i   libvisual-0.4-plugins                                         - Audio visualization framework plugins
p   libvisual-projectm                                            - libvisual module for projectM
BigOwl:~#
さらに,ファイルシステムを検索してそれらしいファイルを探します.
BigOwl:~# find / -name "*libvisual*"
/usr/lib/vlc/visualization/libvisual_plugin.so
/usr/lib/libvisual-0.4.a
/usr/lib/pkgconfig/libvisual-0.4.pc
/usr/lib/libvisual
/usr/lib/rhythmbox/plugins/visualizer/libvisualizer.so
/usr/lib/libvisual-0.4.so.0.0.0
/usr/lib/libvisual-0.4.so.0
/usr/lib/libvisual-0.4
/usr/lib/gstreamer-0.10/libgstlibvisual.so
/usr/lib/libvisual-0.4.so
/usr/share/libvisual-plugins-0.4
/usr/share/locale/es_AR/LC_MESSAGES/libvisual-plugins-0.4.mo
/usr/share/locale/es_AR/LC_MESSAGES/libvisual-0.4.mo
/usr/share/locale/es_ES/LC_MESSAGES/libvisual-plugins-0.4.mo
/usr/share/locale/es_ES/LC_MESSAGES/libvisual-0.4.mo
/usr/share/doc/libvisual-0.4-plugins
/usr/share/doc/libvisual-0.4-0
/usr/share/doc/libvisual-0.4-dev
/usr/include/libvisual-0.4
/usr/include/libvisual-0.4/libvisual
/usr/include/libvisual-0.4/libvisual/lv_libvisual.h
/usr/include/libvisual-0.4/libvisual/libvisual.h
/var/cache/apt/archives/libvisual-0.4-dev_0.4.0-2.1_i386.deb
/var/cache/apt/archives/libvisual-0.4-plugins_0.4.0.dfsg.1-2_i386.deb
/var/lib/dpkg/info/libvisual-0.4-dev.md5sums
/var/lib/dpkg/info/libvisual-0.4-plugins.md5sums
/var/lib/dpkg/info/libvisual-0.4-0.shlibs
/var/lib/dpkg/info/libvisual-0.4-dev.list
/var/lib/dpkg/info/libvisual-0.4-0.list
/var/lib/dpkg/info/libvisual-0.4-0.postrm
/var/lib/dpkg/info/libvisual-0.4-0.postinst
/var/lib/dpkg/info/libvisual-0.4-0.md5sums
/var/lib/dpkg/info/libvisual-0.4-plugins.list
BigOwl:~#

プログラミング

2010/08/05未分類import
私がプログラムをやったことがあるのは,GPIBを使用した測定系用の制御プログラム程度です.
これは,C++で書きました.しかもコマンドラインで動作するものです(gnuplotでグラフ表示と出力はできるものでしたが).

それだけというのも,個人的に納得いかないので,もう少し高度なことに手を出してみようかと思いました.
言語も,必要に応じて手広く学んでいきたいと思います.その際のまとめ的な項目です.

Debian LennyでSE-200PCIをデフォルトにする

2010/08/05未分類import

Debian LennyでSE-200PCIをデフォルトサウンドカードにする?

一度電源を落とし,カードを装着.起動すると,素直に認識しました.
デスクトップ画面上で,システム→設定→サウンドの順に進んで,
それぞれの項目でICE1724(これがドライバの名前)を選択します.
ちなみに,下のような感じになると思います.

Screenshot-効果音の設定.png


これで音楽プレイヤーを起動し再生すると音が出た!
しかし,音量調節がデバイス側で利きません.これは既知の問題です.これは我慢.
プログラムかスピーカー側で調節しましょう.でないと爆音が響き渡ります.
音は流石にいい音.スピーカーがチャチなのに改善するというのが驚きです.

もう少し設定を!

続いて動画を再生してみると,音が出ない…….
今度は端末で設定します.前回のUSB Audioの時と同様の方法でやろうとしたんですが,
下記のalsaconfをタイプしたら,次のような画面が出てきて設定してくれました.
BigOwl:~# alsaconf list
Screenshot-ushi1.png

Screenshot-ushi4.png

Screenshot-ushi2.png

Screenshot-ushi3.png


この後に動画を再生したら,問題なく音が出ました.これで,おそらく大丈夫でしょう.

2010年10月21日 追記

残念ですが,システムを再起動するたびに上記の操作をやらなければ音が出なくなるようです.
デフォルトになってないじゃん!
つけっぱなしのパソコンに差しているので大きな問題ではないですが,
デスクトップ環境としては大きな減点ですね.いい手を後々調べたいと思います.

GSLの使い方

2010/08/03未分類import
GNU Scientific Libraryの略です.C言語の数値計算用のライブラリです.
私はプログラムが専門でないこともあって,こういった大規模なライブラリを扱ったことがありません.
なので,メモ書きに使い方を記そうかと思います.

インストール

Debian Lennyではパッケージになっているのでそれを使う.
以下のリストにあるパッケージ(iと頭にあるパッケージ)をインストールすればちゃんと動くようだ.
BigOwl:/usr# aptitude search gsl
i   gsl-bin                                                       - GNU 科学ライブラリ (GSL) -- バイナリパッケージ
i   gsl-ref-html                                                  - GNU Scientific Library (GSL) リファレンスマニュアル (HTML形式)
i   gsl-ref-psdoc                                                 - GNU Scientific Library (GSL) リファレンスマニュアル (PostScript)
p   libgsl-ruby                                                   - Ruby bindings for the GNU Scientific Library (GSL) (dummy package)
p   libgsl-ruby-doc                                               - Documentation for Ruby/GSL (libgsl-ruby)
p   libgsl-ruby1.8                                                - Ruby bindings for the GNU Scientific Library (GSL)
i   libgsl0-dbg                                                   - GNU Scientific Library (GSL) -- debug symbols package
i   libgsl0-dev                                                   - GNU Scientific Library (GSL) -- development package
i A libgsl0ldbl                                                   - GNU Scientific Library (GSL) -- library package
p   libocamlgsl-ocaml                                             - GNU scientific library for OCaml
p   libocamlgsl-ocaml-dev                                         - GNU scientific library for OCaml
p   octave-gsl                                                    - GSL binding for Octave
p   slang-gsl                                                     - GNU Scientific Library binding for S-Lang
p   yorick-yeti-gsl                                               - GSL special functions plugin for the Yorick language
BigOwl:/usr#
特に,libgsl0-devがないと駄目の模様です.これがヘッダファイルのようです.

動作の確認

例えば,以下のコードをテキストファイルに入力して,一連の作業ができれば大丈夫でしょう.
ファイル名はなぜかinterference.c.このプログラムはWikipediaやGSLマニュアル中で例としてそれぞれに載っていたものです.
#include <stdio.h>
#include <gsl/gsl_sf_bessel.h>

int main(void)
{
        double x = 5.0;
        double y = gsl_sf_bessel_J0(x);
        printf("J0(%g) = %.18e\n", x, y);
        return 0;
}
コンパイル&実行の例↓
ushi@BigOwl:~/keisan$ gcc $(gsl-config --cflags) interference.c $(gsl-config --libs)
ushi@BigOwl:~/keisan$ ./a.out
J0(5) = -1.775967713143382920e-01
ushi@BigOwl:~/keisan$

Windowsでのコンパイル

下記のオプションをつけないと,読み込まない.
gcc filename.c -lgsl -lgslcblas

Debian Lennyでの動画編集

2010/07/26未分類import

Debian Lennyでの動画編集(Windowsと連携)

現状,私がどのような環境で動画の編集保存をしているかを簡単に書いておきます.

利用システム紹介

必要な項目だけ.
Debian Lenny
こちらでエンコードなどの主な処理をします.録画ファイルもWindowsから直接「ファイル置き場2」に保存してます.
-CPU:Core2 Quad Q8400 2.66GHz
  • Memory:2GB
  • HDD:
    • システムディスク
    • ファイル置き場1 1TB
    • ファイル置き場1バックアップ 1TB(2TBディスク分割A)
    • ファイル置き場2 1TB(2TBディスク分割B)
  • Gigabit LAN
Windows XP HE
録画用のハードウェアはこちらにインストールしています.理由はWindowsの方がプログラムが多く,扱いやすいから.スタンバイによる復帰も有効になっているので,そこそこに省エネです.
-CPU:Core2 Duo E6750 2.66GHz
  • Memory:2GB
  • PT2
  • Gigabit LAN
NEC AtermWR8700N PA-WR8700N-HP
無線LANルータですが,ルータとしては使わずに,Gigabitのスイッチ・アクセスポイントして使用.LAN内は40MB/sの速度をたたき出しているので不満なし.このスイッチがないとこの録画環境は完成しないので明記.

録画ファイルの用意と保存先.

録画はWindowsに装着したPT2で行っています.
なぜLinuxサーバですべてを行わないかといえば,Linux上では視聴系のプログラムがなさそうだったり,
プログラムのインストールが煩雑そうだったりしたからです.
PT2の設定に関してはあまたの例がほかのサイトにあると思います.

そして,ファイル置き場2にTSファイルを保存しています.
そのためにsambaを構築してありますが,これは設定もたいして難しくありませんので,割愛.

TSファイルをMPEG-2 PSファイルに変換する

TSファイルは素晴らしい形式ですが,扱いづらいのでMPEG-2 PSファイル(拡張子はmpgなど)に変換します.
これはDVDとかで利用されている形式です.

残念ながら,この変換ではLinux上で手を加えずに動作するプログラムが見つかりませんでした.
Wineを使うという手もありますが,私はWindows上でBonTsDemuxというプログラムを使うことにしました.
バッチ処理も可能なので重宝してます.たまに止まりますが.
なお,読み込むのは「ファイル置き場2」にあるファイルですが,変換後は「ファイル置き場1」に保存しています.
これはエンコード作業と録画作業を切り分けるためです.
録画ファイルの保存先のディスクにアクセスを増やすことは得策ではありません.

Avidemuxで読み込む

mpgファイルに変換できたら今度はDebian上のAvidemuxで編集作業を行います.
これを導入するに当たって,apt-lineにマルチメディアパッケージのもの*1を追加してください.その後にaptitude installすればいいはずです.

とりあえず,Avidemuxがインストールされていれば,mp4への圧縮操作は可能なはずです.
Avidemuxの詳細についてはこちらのページが詳しいです.

適切なフィルタをかけて,CMカットをして,バッチにじゃんじゃん登録していってください.
aviutlと勝手はたいして変わりません.
私はとりあえず,インターレス解除だけフィルタをかけて,MPEG4 AVC(x264),AAC(FAAC)でMP4出力しています.
生成されるファイルは,Totem動画プレイヤーではよく動かないが,
MPlayerやWindows上のプログラムではまともに動きます.

*1 : ftp://ftp.debian-multimedia.org lenny/mainといったもの