PS3 と PS3 Media Server

大変な地震が起きてしまいなんだか冷静ではいられない日々が続いていますが、無事でいられた人間がマイナス思考しているのもいけないであろう、ということで力をプラスに変換して大好きなブログ、書きたいと思います。

被災された方が早く普段の生活を取り戻せるよう祈っています。 aka さん無事で良かった。 🙂

少し前になるのですがついに我が家に液晶テレビと PS3 がやってきました!

いままであったのは、おそらく最終形態のブラウン管テレビ。。 1080i が写るやつでしたので地デジもちゃんとみれていたのですが、HDMI もついていませんでしたし旧世代感は否めませんでした。

買ったテレビは REGZA さんで、超解像とか LAN 上のディスクに録画できるとか、DNLA で TS みれるとか、RD のときもそうでしたがいろいろ遊べそうなのが選定理由。

追加して PS3 も導入され、ついに 10 年くらいメディアプレイアーになっていた初代 XBOX with XBMC をお休みさせられるときがきました。 PS3 のビデオ再生は噂通り、DVD のアップスキャンも優秀で良い感じです。

ps3001

さて、PS3 も REGZA も XBOX でやっていたように、LAN 内のメディア再生が DNLA により可能です。 ここがキモ。

以前、shiroica さんに教えてもらっていた PS3 Media Player を Cent OS/ Atom サーバに導入していろいろ試していています。 🙂

ps3mediaserver

PS3 Media Server is a DLNA compliant Upnp Media Server for the PS3, written in Java, with the purpose of streaming or transcoding any kind of media files, with minimum configuration. It’s backed up with the powerful Mplayer/FFmpeg packages.

PS3 Media Player は Java でできた DNLA サーバアプリケーションで、各種接続機器設定に従い mplayer / mencoder へのパイプから機種にあったストリームを返却して、いろいろなメディアファイルを再生できるつくりになっているようです。 この動作をしてくれるので flac など PS3 が対応していないファイルも再生できるようになります。

いろいろ動画を再生してみましたが PS3 のアップスキャンも効いて初代 XBOX よりパワーアップすることができました。

続いて XBOX はネットラジオの再生でもずいぶん活躍してくれていたのですが、PS3 Media Server もできるかな、、と少し調べていると WEB.inf でちまちま設定はできるのですが、再生できる局とそうでない局があったりいくぶん調子が悪い。。

またネットラジオのディレクトリを読んで、、という動作もできないため XBOX より使い勝手も落ちてしまう感じです。

[tegaki]違う、そうじゃない… by マーチン[/tegaki]

…ないものはつくろう精神はこのブログにも!

PS3 Media Server はプラグインで機能を追加できるようなので、うんうんとソースをよみつつ、あ、そか Groovy 使えるんだと jar をつっこみ苦節数時間。

とりゃ!

ps3002

おれの勝ちだ(笑)

ちょっと API のライセンスの関係でソースとか公開できないのです(はず)が、たぶんやり始めればすぐできると思います。  Groovy 使って150 ステップくらいでできました。

こちらのMedia Monkey の DB を読んで返すプラグインが参考になりました。

PS3Mediaserver plugin

PS3Mediaserver has lots of limitations itself, so it is best to try PS3MediaServer on its own before using the plugin.

PS3 のメディア再生はもう枯れたい域に入っているようで安心して使えますね。

XBMC のほうが動画再生中に動かせたり UI もかっこ良かったりするのですが、こちらは後のお楽しみということで、しばらく PS3 で楽しんでみたいと思います。 😀

Apache Tomcat 6.0.32 インストールメモ

すいません、完全に自分用のメモです(笑)。。

Redmine さんを家で動かす(JRuby on Rails 動作)ようになってからローカルサーバで Apache Tomcat が常時起動になりましたが、 そのバージョンが 6.0.32 に上がっていましたのでアップデートしてみました。 CentOS 5.5 でデーモン起動しています。

こういうの Redmine の wiki に書いておいているのですが、Tomcat アップデート中は Redmine みれないのでこちらに。。(笑)

IMG_0097

まずは動作環境。

$ uname -a
Linux localhost.localdomain 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:53:09 EST 2011 i686 i686 i386 GNU/Linux
$ java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Server VM (build 17.0-b16, mixed mode)

いままで全然気が付かなかったのですが、Linux 版の Java はデフォルト Server VM モードであがるんですね。 Windows は Client VM がデフォルトであがるので、Linux でも Server VM 使うように昔から引数設定していましたが、、実は不要だったようです。

てなわけで Tomcat ダウンロードしてデーモン起動する jsvc をつくって入れるまで。 /opt/tomcat6 にいれています。 tomcat ユーザは作成のこと。

$ sudo /etc/init.d/tomcat6 stop
$ cd /opt
$ sudo wget http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.tar.gz
$ sudo tar zxvf apache-tomcat-6.0.32.tar.gz
$ sudo mv apache-tomcat-6.0.32/ tomcat6/
$ sudo chown -R tomcat:tomcat tomcat6/
$ sudo cp /opt/tomcat6/bin/commons-daemon-native.tar.gz /root
$ sudo su - root
# cd
# tar zxvf commons-daemon-native.tar.gz
# cd commons-daemon-1.0.5-native-src/
# ./configure --with-java=/usr/java/default/
# make
# cp jsvc /opt/tomcat6/bin/
# chown tomcat:tomcat /opt/tomcat6/bin/jsvc
# /etc/init.d/tomcat6 start
# /etc/init.d/tomcat6 stop
# cd /opt/tomcat6/conf/Catalina/localhost/
# vi redmine.xml
# cp redmine.xml redmine.xml.org
# chown tomcat:tomcat *
# chmod 644 *
# /etc/init.d/tomcat6 start

ちなみに、redmine.xml はコンテキストルートと .war のパス設定のみ。

$ cat /opt/tomcat6/conf/Catalina/localhost/redmine.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/redmine" docBase="/home/apache/redmine/redmine.war" />

デーモン起動用の init.d シェル。

$ cat /etc/init.d/tomcat6
#!/bin/sh
#
# chkconfig: - 80 20
# description: jsvc

# Source function library.
. /etc/init.d/functions

JAVA_HOME=/usr/java/default
CATALINA_HOME=/opt/tomcat6
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
PIDFILE=/var/run/tomcat.pid
LOCKFILE=/var/lock/subsys/tomcat
DAEMON=$CATALINA_HOME/bin/jsvc

start(){
    #
    # Start Tomcat
    #

    echo -n "Starting tomcat6: "
    $DAEMON \
    -pidfile $PIDFILE \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap

    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        touch $LOCKFILE
    else
        echo_failure
    fi
    echo
}

stop(){
    #
    # Stop Tomcat
    #
    echo -n "Shutting down tomcat6: "
    $DAEMON \
    -stop \
    -pidfile $PIDFILE \
    org.apache.catalina.startup.Bootstrap
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
        echo_success
        rm -f $PIDFILE $LOCKFILE
    else
        echo_failure
    fi
    echo
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status $DAEMON
        RETVAL=$?
        ;;
    *)
        echo $"Usage: jsvc {start|stop|restart|status}"
        exit 1
        ;;
esac

Apache httpd と Apache Tomcat をつなぐ proxy_ajp.conf。

$ cat /etc/httpd/conf.d/proxy_ajp.conf

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

#
# When loaded, the mod_proxy_ajp module adds support for
# proxying to an AJP/1.3 backend server (such as Tomcat).
# To proxy to an AJP backend, use the "ajp://" URI scheme;
# Tomcat is configured to listen on port 8009 for AJP requests
# by default.
#

#
# Uncomment the following lines to serve the ROOT webapp
# under the /tomcat/ location, and the jsp-examples webapp
# under the /examples/ location.
#
#ProxyPass /tomcat/ ajp://localhost:8009/
#ProxyPass /examples/ ajp://localhost:8009/jsp-examples/

ProxyPass /redmine ajp://localhost:8009/redmine

Tomcat と全然関係ないですが、fastladder を動かしている passenger.conf。

$ cat /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/bin/ruby

<VirtualHost *:8081>
   ServerName localhost.localdomain
   DocumentRoot /opt/fastladder/public
   <Directory /opt/fastladder/public>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>

さらに関係ないですが、Redmine とつないでいる subversion.conf。

$ cat /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

#
# Example configuration to enable HTTP access for a directory
# containing Subversion repositories, "/var/www/svn".  Each repository
# must be readable and writable by the 'apache' user.  Note that if
# SELinux is enabled, the repositories must be labelled with a context
# which httpd can write to; this will happen by default for
# directories created in /var/www.  Use "restorecon -R /var/www/svn"
# to label the repositories if upgrading from a previous release.
#

#
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
#   # cd /var/www/svn
#   # svnadmin create stuff
#   # chown -R apache.apache stuff
#

<VirtualHost *:8082>
   <Location />
      DAV svn
      SVNParentPath /home/apache/svn
      SVNListParentPath on
      DavDepthInfinity on
      Order deny,allow
      Deny from all
      Allow from 127.0.0.1
      Allow from 192.168.0.0/24
      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /home/apache/passwd/.htpasswd
      Require valid-user
   </Location>
</VirtualHost>

以上。

[tegaki]すいません、すいません。。[/tegaki]

Firefox 4.0 beta と WebGL

Linux 版の Firefox 4.0 も beta11 まできまして、だいぶ良い感じに動くようになってきました。 最初はテキストボックスのキー入力がやたら遅かったり、タブの描画がおかしかったりなかなかのベータ感だったのですが、もう常用しても大丈夫な感じです(といっても当然テスト用です)

Linux 版の Firefox ってちょっと特殊で GTK のテーマをそのまま持ってくるようにつくってあります。 なので4.0 で特徴的なウインドウフレームと閉じるの統合とか、オレンジ色の右上とかはまだありません。 この辺をどうするのか興味深いですね。 🙂

firefox10

そんな 4.0 の新機能の一つ WebGL、まだ Intel GPU 系が未対応のあるみたいですが、結構面白いです。 Chrome さんも 9.0 で標準 enable になってみたいですね。  Firefox 4.0 も beta9 だったか 10 だったかで標準 enable になったと思います。

Chrome 9.0 か Firefox 4.0 beta (+OpenGL 対応カード)を使っている方は以下のサイトでデモを楽しむことができます。

WebGL Experiments

WebGL is a new web technology that brings hardware-accelerated 3D graphics to the browser without installing additional software.To try these WebGL experiments with Google Chrome, please download and install it below.

一応、Chrome デモ用のサイトですが、ほとんどが Firefox 4.0 でも問題なく動作するようです。

webgl01

WebGL は JavaScript 経由で PC グラフィックカードの OpenGL ES API を呼び出すことができます。 ぱらっとみる限り 1:1 の薄いラッパーのようです。 たぶん OpenGL 知っている方ならすぐ描画できると思います。

OpenGL ES は iPhone とか Android 機でも使われている OpenGL のサブセットです。

webgl02

webgl03

サブセットとはいえ、プログラマルシェーダをカードに送り込んだりもできますので表現力があります。

既に JavaScript のフレームワークもいくつかでているようです。

GLGE WebGL Library/Framework

GLGE is a javascript library intended to ease the use of WebGL; which is basically a native browser javascript API giving direct access to openGL ES2, allowing for the use of hardware accelerated 2D/3D applications without having to download any plugins.

サイトにはなんだか市販ゲームのようなスクリーンショットもみえますね。 🙂

webgl04

対応ブラウザは今のところ Webkit 系と Gecko 系になると思いますので、全ブラウザ対応とはいきませんがワンポイントで対応していればすごくなる的な使い方はできるのではないかと思います。 たとえば、このサイトの右の kougaburari のところとか 対応していれば OpenGL で描画してみたりしてみたりですね!

速くなったとはいえまだまだ JavaScript に性能はくわれちゃうと思いますが、シェーダ含めてローカル資源を活用できるという意味で面白い技術です。 😀