Posted by & filed under mac, server, unix.


サーバーにデータを溜め込むだけでなくて,内輪だけでいいので配信もできたら便利かなと考えた.

前のサーバーでは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

Darwin Streaming Server 6.0.3 on Linux – Clayton Shepard

どうやら,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">
 ##

以上.