Wowza Media Server 2 でiPhoneへのオンデマンドストリーミング、ライブストリーミング

Wowza Media Serverのバージョン2が先日リリースされたのですが、Apple HTTP Live StreamingによるiPhoneへの配信が可能になりました。ということで試してみましたのでついでにCentOS5でのセットアップの手順を書きました。

Javaのインストール

[root@localhost ~]# yum install java

Wowza ServerのRPMインストール

WowzaサイトからLinux RPM版のURLを取得します。
また、実行に必要なシリアルNoも取得しておきます。(今回はWowza Server Developer Editionを取得しました。)

$ mkdir work
$ cd work
$ wget http://www.wowzamedia.com/downloads/WowzaMediaServer-2-0-0/WowzaMediaServer-2.0.0.rpm.bin
$ chmod +x WowzaMediaServer-2.0.0.rpm.bin
$ ./WowzaMediaServer-2.0.0.rpm.bin

Wowza Serverのライセンスキー設定及び実行

$ cd /usr/local/WowzaMediaServer/bin
$ ./startup.sh
Configure logging: file:///usr/local/WowzaMediaServer/conf/log4j.properties
Please enter serial number:
XXXXX-XXXXX-XXXXX-XXXXX-XXXXX #ここでシリアルNoを入力

サーバが起動しますので、一旦Ctrl+Cで停止します。

自動起動の設定

$ chkconfig WowzaMediaServer on
$ chkconfig WowzaMediaServer --list
WowzaMediaServer    0:off   1:off   2:on    3:on    4:on    5:on    6:off
$ /etc/rc.d/init.d/WowzaMediaServer start #再度、Wowzaを起動

サンプルのインストール

$ cd /usr/local/WowzaMediaServer/examples/
$ ./installall.sh

オンデマンドをiPhoneで試す

オンデマンドアプリケーションの作成、設定

$ cd /usr/local/WowzaMediaServer/conf/
$ mkdir vod
$ cp Application.xml vod/

http://hostname:1935/vod/mp4:Extremists.m4v/playlist.m3u8 にアクセスすると動画のストリーミングが開始されます。

ライブストリーミングをiPhoneで試す

ライブストリーミングアプリケーションの作成、設定

$ cd /usr/local/WowzaMediaServer/conf/
$ mkdir live
$ cp Application.xml live/
$ vi live/Application.xml
#Streams/StreamTypeをliveに変更
#Streams/LiveStreamPacketizersをcupertinostreamingpacketizerに変更(WowzaのドキュメントではStreamタグ内と書いてありませんでしたが、こちらに設定しないとうまくいきませんでした)
#RTP/Authentication/PlayMethodをnoneに変更
#RTP/Authentication/PublishMethodをnoneに変更

ウェブキャストアプリケーションのインストール、放送

ここではWireCastを使用します。
こちらからWireCastをダウンロード、インストールし起動

ウィンドウ下部で使用するカメラを選択
メニュー > 放送 > 放送セッティングを選択し下記セッティングを用意する

  • エンコーダープレ
    エンコーダプレコンボボックスから編集を選択。ここでは下記のようにしました。
  • デスティネーション
    QuickTime ストリーミングサーバに知らせる。
  • ホスト名
    hostname:1935
  • ロケーション
    live/myStream.sdp(myStream部分は別名可)
  • ユーザ名、パスワード
    なし(認証は試していません)
  • TCP経由ブロードキャスト
    なし

上記で保存。

ウィンドウ左上の放送アイコンをクリック。これで放送が開始されます。
http://hostname:1935/live/myStream.sdp/playlist.m3u8 にアクセスするとライブストリーミングが開始されます。

Facebooktwitterlinkedintumblrmail

OS X に導入した PostgreSQL の自動起動を無効にする

PostgreSQL が自動起動するようになっていたので止めときます。開発・検証用ですので。

OS X では daemon の起動は launchctl コマンドで設定できるようです。拡張子が plist な設定ファイルでコントロールしているそうなので探します。

$ locate plist | grep postgres
/Library/LaunchDaemons/com.edb.launchd.postgresql-8.4.plist
/Library/PostgreSQL/8.4/uninstall-postgresql.app/Contents/Info.plist

com.edb.launchd.postgresql-8.4.plist というファイルのようです。

$ sudo launchctl unload -w /Library/LaunchDaemons/com.edb.launchd.postgresql-8.4.plist

再起動して確認。

$ ps ax | grep postgres
  419 s000  S+     0:00.00 grep postgres

おけおけ。

逆に自動起動させたいときは

$ sudo launchctl load -w /Library/LaunchDaemons/com.edb.launchd.postgresql-8.4.plist

ですかね。

Facebooktwitterlinkedintumblrmail

CentOS5.5 64bitにmod_pythonをインストール

CentOS5.5に標準で入っているPythonは2.4系でした。最初は何も考えずソース取って来てコンパイルしてインストールしてましたが、オプション無しでコンパイルするとmod_pythonのインストールにこけてしまいました。下記インストール手順になります。

Python 2.6

wget http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tgz
tar xzvf Python-2.6.5.tgz
cd Python-2.6.5
./configure --enable-shared
CFLAGS="-fPIC" CXXFLAGS="-fPIC" LDFLAGS="/usr/local/lib" make
make install
cp libpython2.6.so* /usr/lib64/
vi /etc/ld.so.conf.d/python2.6.conf
+1:/usr/local/bin
/sbin/ldconfig
ln -s /usr/local/bin/python /usr/bin/python2.6

一旦ログアウト

ldd /usr/local/bin/python
    libpython2.6.so.1.0 => /usr/lib64/libpython2.6.so.1.0 (0x00002b7ea57a7000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003d9cc00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003d9c400000)
    libutil.so.1 => /lib64/libutil.so.1 (0x0000003d9f800000)
    libm.so.6 => /lib64/libm.so.6 (0x0000003d9d000000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003d9c000000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003d9bc00000)

lib64を見ているか確認

mod_python

wget http://ftp.kddilabs.jp/infosystems/apache/httpd/modpython/mod_python-3.3.1.tgz
tar xzvf mod_python-3.3.1.tgz
cd mod_python-3.3.1
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/local/bin/python
vi src/connobject.c
-142:!(b == APR_BRIGADE_SENTINEL(b) ||
+142:!(b == APR_BRIGADE_SENTINEL(bb) ||
#フォーラムにありましたが、どうやらバグのようです。
chown apache:apache /usr/local/apache2/modules/mod_python.so
#権限は環境に合わせてください
Facebooktwitterlinkedintumblrmail

NATなFusion上のWindowsからホストのPostgreSQLに接続

MacBookにPostgreSQLを『Mac OS X で PostgreSQL を使ってみよう』(http://lets.postgresql.jp/documents/tutorial/macosx/)を参考にしつつ導入したのですがpsqlで日本語が通らず困ってたりする今日この頃です。ヘルプミー。

とりあえず、VMware Fusiion3上のWindows7にもPostgreSQLを入れたのですが、ServerだけMac側を使おうかなと。サーバーUnix系OS、クライアントWindowsな実環境に近くなりますし。

ってなわけで、Fusion上のWin7がどうなっているやら調べます。ipconfigで見てみましょう。ネットワーク アダプタはNATです。

IPv4 アドレス . . . . . . . . . . : 192.168.249.131

サブネット マスク . . . . . . . . : 255.255.255.0

デフォルト ゲートウェイ . . . . . : 192.168.249.2

ということで、ホストのアドレスは192.168.249.1のようですね。

次、OS X に導入したPostgreSQL8.4がどうなってるのか探ります(ちょい前に導入したもので設定を忘れてまして)。探っていくと、/Library/PostgreSQL/ってなところにインストールされているようです。

設定ファイルを探します。デフォルトだとデータと同じ場所に設定ファイルがありますね。

$ sudo ls -l /Library/PostgreSQL/8.4/data/
total 80
-rw-------   1 postgres  daemon      4  1 15 08:41 PG_VERSION
drwx------   6 postgres  daemon    204  1 16 21:07 base
drwx------  42 postgres  daemon   1428  3 18 17:33 global
drwx------   3 postgres  daemon    102  1 15 08:41 pg_clog
-rw-------   1 postgres  daemon   3405  1 15 08:41 pg_hba.conf
-rw-------   1 postgres  daemon   1631  1 15 08:41 pg_ident.conf
drwxr-xr-x  69 postgres  daemon   2346  3 23 00:00 pg_log
drwx------   4 postgres  daemon    136  1 15 08:41 pg_multixact
drwx------   3 postgres  daemon    102  3 23 11:24 pg_stat_tmp
drwx------   3 postgres  daemon    102  1 15 08:41 pg_subtrans
drwx------   2 postgres  daemon     68  1 15 08:41 pg_tblspc
drwx------   2 postgres  daemon     68  1 15 08:41 pg_twophase
drwx------   4 postgres  daemon    136  1 15 08:41 pg_xlog
-rw-r--r--   1 postgres  wheel   16779  1 15 08:42 postgresql.conf
-rw-------   1 postgres  daemon     70  3 18 17:33 postmaster.opts
-rw-------   1 postgres  daemon     52  3 18 17:33 postmaster.pid

ありました。設定見たり、いじったりしましょう。

まずは postgresql.conf。postgresさんの持ち物らしいので、なりきってGO。

$ sudo -u postgres vim /Library/PostgreSQL/8.4/data/postgresql.conf

で、眺めると、全てのアドレスでlistenはしてるようです。

listen_addresses = '*'          # what IP address(es) to listen on;

修正は必要ありませんでした。

次、pg_hba.confを同じくpostgresさんになりきってエディターで開きます。

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

当然、192.168.249.131からの接続は許可されてません。今回は192.168.249.*からtrust(認証なし)にすることにします。

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5
# Win7 on Fusion3 connections
host    all         all         192.168.249.0/24      trust

trustな行が追記分です。保存して、PostgreSQLをリスタート。

Fusion 上の Win7 で pgAdmin III を起動して接続してみます。

よしよし。

Facebooktwitterlinkedintumblrmail

make不要になっていたRed5

Red5はバージョンは追っていたんですが、0.6以降全く触っていなかったので、とりあえずインストールだけでもやっておくかなと0.9.1をダウンロード。
http://code.google.com/p/red5/

ちょっと調べてみるともうmakeしなくてもそのまま動作するらしいので、antも入れないで良いかと、CentOS5にJAVAだけインストールしてその後、環境変数を設定。

export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin

red5を解凍して適当に放り込んで起動。
/usr/local/red5/red5.sh &

するとエラー。
 Exception in thread “main” java.lang.NoClassDefFoundError: org/red5/server/Bootstrap

調べてみても、それらしいものは見当たりません。
シェルなんだしと、とりあえず中身を見てみるとRED5_HOMEと言ういかにもな環境変数が無い時にpwdで取ろうとしていたので、ああ、なるほど、とカレントに移動してやってみる。
 cd /usr/local/red5
 ./red5.sh
見事に起動。時々やった事はあるけど、pwdで取っても意味が無い奴ですね。一応環境変数に追加しておきます。これでどこからでも起動可能でした。
 export RED5_HOME=/usr/local/red5

あ、exportはbashrc等のファイルに書いておかないと次回起動した時に消えるので忘れずに。

Facebooktwitterlinkedintumblrmail

OpenGrokをCentOS5にインストール

MOONGIFTさん経由で知ったのですが、OpenGrokはSCM(Subversion、Git、Mercurial等)上のソースコードを関数名、変数名その他で検索できるエンジンで、CDDLでオープンソースとして公開されています。この検索エンジンを使用する状況としては、「この関数ってどんな使い方?」、「某言語の某関数にバグがあるみたいなんだけど、うちのコードで使ってなかった?」といった時が考えられます。便利そうでしたのでCentOS5にインストールしてみました。

OpenGrokの動作に必要なctags、tomcat等をインストール

yum install ctags tomcat5 tomcat5-webapps
chkconfig tomcat5 on

OpenGrok用ディレクトリを作成

mkdir /var/opengrok/
mkdir /var/opengrok/bin
mkdir /var/opengrok/src #ここに解析対象のソースを置くことに
mkdir /var/opengrok/data
mkdir /var/opengrok/etc

OpenGrokをダウンロード・展開

mkdir work
cd work
wget
tar xzvf opengrok-0.9-rc1.tar.gz
mv opengrok-0.9-rc1/* /var/opengrok/

source.warを一度展開し、web.xmlを編集する

mkdir source
cd source
unzip /var/opengrok/lib/source.war
vi WEB-INF/web.xml
#下記を追加

  ...
  
    DATA_ROOT
    /var/opengrok/data
    REQUIRED: Full path of the directory where data files generated by OpenGrok are stored
  

  
    SRC_ROOT
    /var/opengrok/src
    REQUIRED: Full path to source tree
  

  
    SCAN_REPOS
    false
    Set this variable to true if you would like the web application to scan for external repositories (Mercurial)
   
   ...

zip -r source.war ./
mv source.war /var/opengrok/lib/
cp /var/opengrok/lib/source.war /var/lib/tomcat5/webapps/

何かソースを取得しておく

cd /var/opengrok/src
svn co file:///home/svn/project #何かチェックアウトしてみる

インデックス作成用スクリプトの編集

vi /var/opengrok/doc/run.sh
#!/bin/sh

#変更
PROGDIR=/var/opengrok

# REQUIRED The root of your source tree
#変更
SRC_ROOT=${PROGDIR}/src

# REQUIRED  The directory where the data files like
# Lucene index and hypertext cross-references are stored
#変更
DATA_ROOT=${PROGDIR}/data

# OPTIONAL A tab separated files that contains small
# descriptions for paths in the source tree
PATH_DESC=${PROGDIR}/doc/paths.tsv

# A modern Exubrant Ctags program
# from http://ctags.sf.net
#変更
EXUB_CTAGS=/usr/bin/ctags

# If you need to set properties (Ex. override the mercurial binary)
#PROPERTIES=-Dorg.opensolaris.opengrok.history.Mercurial=/home/trond/bin/hg

# Uncomment the following line if your source contains Mercurial repositories.
# SCAN_FOR_REPOS="-S"

# You might want to add more available memory, and perhaps use a server jvm?
#JAVA_OPTS="-server -Xmx1024m"

LOGGER="-Djava.util.logging.config.file=logging.properties"

#変更
java ${JAVA_OPTS} ${PROPERTIES} ${LOGGER} -jar ${PROGDIR}/lib/opengrok.jar ${SCAN_FOR_REPOS} -c ${EXUB_CTAGS} -W ${PROGDIR}/etc/configuration.xml -P -S -v -s ${SRC_ROOT} -d ${DATA_ROOT}

# OPTIONAL
java ${LOGGER} -classpath ${PROGDIR}/lib/opengrok.jar org.opensolaris.opengrok.web.EftarFile ${PATH_DESC} ${DATA_ROOT}/index/dtags.eftar
chmod +x /var/opengrok/doc/run.sh

インデックス作成スクリプトの実行

/var/opengrok/doc/run.sh #このスクリプトをcron等で定期実行する

Tomcatの起動

/etc/rc.d/init.d/tomcat5 start

http://hostname:8080/source/ にアクセスし確認

Facebooktwitterlinkedintumblrmail

検査いってきました

3/19(金)、休みをもらって検査に行っていきました。
昨年、手術・入院がありまして退院後1年の定期検診です。

「問題なし」とのことで一安心です。

Facebooktwitterlinkedintumblrmail

FlashDevelop 3.1.0 RTM がリリースされてました

4/21にリリースされたようです。

FlashDevelop.jp の記事
http://flashdevelop.jp/FlashDevelop3.1.0_RTM

ダウンロードできる場所
http://www.flashdevelop.org/community/viewtopic.php?f=11&t=6415

なんと、日本語での解説!
馬鹿全 – FlashDevelop 3.1.0 RTM リリース

私は今日 flex_sdk_3 から flex_sdk_4 に切り替えていて、たまたまFlashDevelop の本家を見に行ったらリリースされていて大喜び!って感じだったのですが、日本のサイトでこれだけ情報が出ているのはうれしいですね。しかも、FlashDevelop自体が日本語ローカライズされている!

インストールの記事でも書こうかと思ったのですが、前のバージョンでは必要だった文字コードがらみの設定も必要なくなり(デフォルトがUTF8のBOMなしになっているのでそのままで普通に使えます)、特記するようなこともなくなっていましたのでやめときます。FlashDevelop.jp をご参照くださいってことで。

Facebooktwitterlinkedintumblrmail

PostgreSQL9.0が正式リリースされたようですね

http://www.postgresql.jp/

やはり最大の特徴はレプリケーションやホットスタンバイ等が統合されている点でしょうか。
これでマスタースレーブへの導入が進むとか、新しい使い方も出て来そうな気もしますが、試すには時間が無いかな。

Facebooktwitterlinkedintumblrmail

yum の Proxy 設定でハマった

前回の Mac の Web 共有で Proxy で設定した Macbook 経由で CentOS 5 のサーバーで yum を使おうとして少しハマったのでメモ。

「export で proxy 設定してもダメ!」だったのでした。

http_proxy やら ftp_proxy やら設定しまくって、やっぱりだめで、ところが yum.conf を編集したらあっさり、さっくり、うまくいってしまったのでした。一時的に繋ぎたいだけなので yum.conf を触りたくなかったのですがしょうがないですね。

一般的にそうなのかはわからないのですが、そういうことがあったということで。

ちなみに、apt の場合は export で http_proxy (と必要なら ftp_proxy )環境変数を設定すれば OK。

Facebooktwitterlinkedintumblrmail