[linux] ストリーミングサーバーいろいろ
サーバーにデータを溜め込むだけでなくて,内輪だけでいいので配信もできたら便利かなと考えた.
前のサーバーではgnump3dを使っていたのだけれど,今回,新しい物に手を出してみることにした.
今回導入してみるのは,Apple社謹製のストリーミングサーバ,QuickTime Streaming Serverのオープンソース版である,Darwin Streaming Server.
MacOS向けのサーバーアプリだけど,Cで記述してあるらしく,Linuxでもコンパイルしてやれば動くみたい.
とりあえずソースを取ってくる
% wget http://dss.macosforge.org/downloads/DarwinStreamingSrvr6.0.3-Source.tar % tar xvf DarwinStreamingSrvr6.0.3-Source.tar
まえのバージョンだとLinux版も別にソースがあったみたいだけど,今はMac用のソースしか公開していないっぽい.
Mac向けのコンパイルなので,このままInstallしても無理.いっかりビルドが必要ということで,実行してみる.
% cd DarwinStreamingSrvr6.0.3-Source % ./Buildit
で,ここでビルド失敗.まあ,Mac用のソースなんだから当然と言ったら当然なのかもしれないのだが…困った.
困ったときにはGoogle先生に尋ねるのが一番.
一番最初のページで解決策が見つかったw
どうやら,Linux用のパッチを作ってくれている方がいたようで,パッチを2つ当てるだけであっさりコンパイルが通ってしまった.
% cd ../ % wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/dss-6.0.3.patch % wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/dss-hh-20080728-1.patch % wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/Install % patch -p0 < dss-6.0.3.patch % patch -p0 < dss-hh-20080728-1.patch % mv Install ./DarwinStreamingSrvr6.0.3-Source/ % cd DarwinStreamingSrvr6.0.3-Source % chmod +x Install % ./Buildit $ ./Install
これにて設定完了.で,試しに接続してみたところ,1Mbpsのh.264動画は問題なく再生できた.…が,mp3がどうもうまく再生できない.
どっちかと言えば音楽配信の方が本命なので,これができないと意味がないw
mp3配信はhttpプロトコルなので,ブラウザから該当アドレスをのぞいてみると,400エラーを返された.
これもGoogle先生に尋ねてみると,こんなお答えが.
QuickTime Streaming returns 400 Bad Request
Via: Steven Eppler's Blog
この記事の通りにしてみたけど,やっぱりうまく行かない.
[nggtags album=DSS]
結局GNUMP3dになった.こっちのインストールは簡単.
% wget http://savannah.gnu.org/download/gnump3d/gnump3d-3.0.tar.gz % tar xzvf gnump3d-3.0.tar.gz
ここで,mp3タグを読み込むスクリプトにパッチを当てる.読み込んだタグをJcodeですべてUTF-8に変換する.(→gnump3dでストリーミング - ももーい鯖覚書)
-- gnump3d-3.0/lib/gnump3d/readtags.pm.bak 2009-05-08 15:23:51.000000000 +0900
+++ gnump3d-3.0/lib/gnump3d/readtags.pm 2009-05-08 15:32:23.000000000 +0900
@@ -4,6 +4,7 @@
package main;
use strict;
+use Jcode;
use gnump3d::ogginfo; # Pure Perl OGG Vorbis tag parsing.
use gnump3d::mp3info; # Local copy of MP3::Info.
@@ -50,13 +51,13 @@
#
# We have some tags .. so store them
#
- $TAGS{'ARTIST'} = $tag->{ARTIST} || "";
- $TAGS{'TITLE'} = $tag->{TITLE} || "";
- $TAGS{'ALBUM'} = $tag->{ALBUM} || "";
- $TAGS{'YEAR'} = $tag->{YEAR} || "";
- $TAGS{'COMMENT'}= $tag->{COMMENT} || "";
- $TAGS{'TRACK'} = $tag->{TRACKNUM} || "";
- $TAGS{'GENRE'} = $tag->{GENRE} || "";
+ $TAGS{'ARTIST'} = Jcode::convert(\$tag->{ARTIST}, 'utf8', &Jcode::getcode(\$tag->{ARTIST}), "z") || "";
+ $TAGS{'TITLE'} = Jcode::convert(\$tag->{TITLE}, 'utf8', &Jcode::getcode(\$tag->{TITLE}), "z") || "";
+ $TAGS{'ALBUM'} = Jcode::convert(\$tag->{ALBUM}, 'utf8', &Jcode::getcode(\$tag->{ALBUM}), "z") || "";
+ $TAGS{'YEAR'} = Jcode::convert(\$tag->{YEAR}, 'utf8', &Jcode::getcode(\$tag->{YEAR}), "z") || "";
+ $TAGS{'COMMENT'}= Jcode::convert(\$tag->{COMMENT}, 'utf8', &Jcode::getcode(\$tag->{COMMENT}), "z") || "";
+ $TAGS{'TRACK'} = Jcode::convert(\$tag->{TRACKNUM}, 'utf8', &Jcode::getcode(\$tag->{TRACKNUM}), "z") || "";
+ $TAGS{'GENRE'} = Jcode::convert(\$tag->{GENRE}, 'utf8', &Jcode::getcode(\$tag->{GENRE}), "z") || "";
return( %TAGS );
この後は通常通り.
% cd ./gnump3d-3.0 $ make install $ cp rcfiles/debian /etc/init.d/gnump3d $ chmod +x /etc/init.d/gnump3d $ /etc/init.d/gnump3d start
標準ではmetaタグが出力されていないようなので,出力されるようにgnump3d.confの以下の部分を変更する.
--- gnump3d.conf.bak 2009-05-09 04:10:54.000000000 +0900 +++ gnump3d.conf 2009-05-09 03:51:50.000000000 +0900 @@ -897,7 +897,7 @@ # add is an encoding type. # # add_meta_tag = <meta name="author" value="Steve Kemp" /> -# add_meta_tag = <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +add_meta_tag = <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ##
以上.
