943SH用ミュージックサーバの構築

 943SHのストリーミング再生に関しては、特定のサーバ等に依存しない。
 ファイルの形式さえ対応していれば、普通に汎用のWebサーバに置かれたメディアファイルを再生することが出来る。

 と言う訳で、943SH用にミュージックサーバを構築してみた。

 ミュージックサーバの構築といっても基本的には通常のWebサーバと同様。
 メディアファイルの公開に関しては、個別にページを作成するのではなく、ディレクトリリストを直接表示するようにしている。

縦画面アクセス時
横画面アクセス時

Webサーバの導入

 既存のWebサーバを使用しても良かったが、今回はテストも兼ねてWindowsマシンでサーバを構築してみる。
 サーバソフトには Abyss Web Server を使用した。

 インストール後、自宅のミュージックサーバ=Windows共有のNASを公開対象に設定する。
 AbyssはWindows共有フォルダも公開対象に設定出来るが、UNCを直接指定することは出来ないので、ちょっとコツがいる。
 まず、公開したい共有フォルダをネットワークドライブに割り当てる。
 その後、サーバのエイリアス設定で、任意の公開対象フォルダにネットワークドライブを割り当てればOK。

 Abyss はディレクトリリストで表示するファイルのフィルタリングなども行えるので、用途に応じて、適宜公開対象ファイルを指定することも出来る。
 サーバ側の設定は、基本的に以上。

MP4ファイルの準備

 943SHでストリーミング再生出来るファイルはMP4動画オンリーなので、音楽ファイルもMP4の動画ファイルとして作成する。

 色々調整した結果、フォーマットは

 映像:192x108 24Bit AVC/H.264 Baseline@1.3 1fps 1kbps
 音声:AAC 44.1kHz 2ch(2/0 L+R) LC 127kbps

に設定。

 変換には BonTsDemux(mod 10k7+nogui+es+fix02)同梱のFFmpegを使用。
 ストリーミングヘッダの修正には、MP4Box 0.4.5を使用した。

 以下、変換用バッチファイル。

MP3toMP4_1.0.zip

SET EXECDIR=C:\Program Files\MP3toMP4
SET OUTDIR=C:\Program Files\MP3toMP4\MP4DATA


if not exist "%OUTDIR%" mkdir "%OUTDIR%"
cd "%EXECDIR%"

:loop
if "%~1"=="" goto exit
SETLOCAL
SET DF=%~a1
IF "%DF:~0,1%"=="-" goto ConvertFile
IF "%DF:~0,1%"=="d" goto ConvertDir
goto NextArg

:ConvertFile
ffmpeg -f image2 -loop_input -shortest -i SoundOnly.bmp -i "%~1" -vcodec libx264 -coder 0 -flags loop -cmp chroma -partitions parti4x4+partp8x8 -me_method hex -subq 7 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 0 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -bf 0 -refs 3 -directpred 0 -trellis 0 -flags2 mixed_refs+fastpskip -level 13 -threads 0 -maxrate 768000 -bufsize 3000000 -s 192x108 -aspect 16:9 -r 1 -b 2000 -acodec libfaac -ar 44100 -ac 2 -ab 126000 -f mp4 -y output.mp4
mp4box -add output.mp4 -new "%OUTDIR%\%~n1.mp4"
del output.mp4
goto NextArg

:ConvertDir
cd %OUTDIR%
mkdir "%~n1"
cd %EXECDIR%
dir "%~1" /b/a-d > "%EXECDIR%\dirlist.txt"
for /f "DELIMS=" %%F in (dirlist.txt) do (
 ffmpeg -f image2 -loop_input -shortest -i SoundOnly.bmp -i "%~1\%%F" -vcodec libx264 -coder 0 -flags loop -cmp chroma -partitions parti4x4+partp8x8 -me_method hex -subq 7 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -b_strategy 0 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -bf 0 -refs 3 -directpred 0 -trellis 0 -flags2 mixed_refs+fastpskip -level 13 -threads 0 -maxrate 768000 -bufsize 3000000 -s 192x108 -aspect 16:9 -r 1 -b 2000 -acodec libfaac -ar 44100 -ac 2 -ab 126000 -f mp4 -y output.mp4
 mp4box -add output.mp4 -new "%OUTDIR%\%~n1\%%~nF.mp4"
 del output.mp4
)
del dirlist.txt
goto NextArg

:NextArg
shift
goto loop

:exit

 バッチファイルの先頭、「EXECDIR=」には実行ファイルを置くディレクトリを指定。
 同じく、「OUTDIR=」は変換後のMP4ファイルの出力先を指定する。

 変換対象は、ファイルもしくはメディアファイルが含まれたディレクトリ。ただし、サブディレクリには対応しない。

 上記バッチファイル、あるいはショートカットにD&Dで対象を放り込むか、コマンドライン引数で指定すれば変換が行われる。
 ちなみに、バッチファイル名こそMP32MP4だが、別にFFmpegが理解出来る形式であれば、WAVでもWMAでも変換可能。

再生画面