vlc がないので ffmpeg でトランスコード
mediatomb の config.xml には最初からトランスコードをする為の設定がファイルの最後の方に入っている。
<transcoding enabled="yes"> <mimetype-profile-mappings> <transcode mimetype="video/x-flv" using="vlcmpeg"/> <transcode mimetype="application/ogg" using="vlcmpeg"/> <transcode mimetype="application/ogg" using="oggflac2raw"/> <transcode mimetype="audio/x-flac" using="oggflac2raw"/> </mimetype-profile-mappings> <profiles> <profile name="oggflac2raw" enabled="no" type="external"> <mimetype>audio/L16</mimetype> <accept-url>no</accept-url> <first-resource>yes</first-resource> <accept-ogg-theora>no</accept-ogg-theora> <agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/> <buffer size="1048576" chunk-size="131072" fill-size="262144"/> </profile> <profile name="vlcmpeg" enabled="yes" type="external"> <mimetype>video/mpeg</mimetype> <accept-url>yes</accept-url> <first-resource>yes</first-resource> <accept-ogg-theora>yes</accept-ogg-theora> <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/> <buffer size="14400000" chunk-size="512000" fill-size="120000"/> </profile> </profiles> </transcoding> </config>
ここで
が、しかし、うちのサーバには vlc が入っていない…。というわけで、ffmpeg を使ってトランスコードをすることにした。参考にしたのはココ。具体的には vlc の代わりに ffmpeg で変換するシェルスクリプトを作成してそれを使ってトランスコードする。
実際の config.xml のトランスコードの部分はこんな感じ。
<transcoding enabled="yes"> <mimetype-profile-mappings> <transcode mimetype="video/x-ms-wmv" using="vlcmpeg"/> <transcode mimetype="video/divx" using="vlcmpeg"/> <transcode mimetype="video/x-flv" using="vlcmpeg"/> <transcode mimetype="application/ogg" using="vlcmpeg"/> <transcode mimetype="application/ogg" using="oggflac2raw"/> <transcode mimetype="audio/x-flac" using="oggflac2raw"/> </mimetype-profile-mappings> <profiles> <profile name="oggflac2raw" enabled="no" type="external"> <mimetype>audio/L16</mimetype> <accept-url>no</accept-url> <first-resource>yes</first-resource> <accept-ogg-theora>no</accept-ogg-theora> <agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/> <buffer size="1048576" chunk-size="131072" fill-size="262144"/> </profile> <profile name="vlcmpeg" enabled="yes" type="external"> <mimetype>video/mpeg</mimetype> <accept-url>yes</accept-url> <first-resource>yes</first-resource> <accept-ogg-theora>yes</accept-ogg-theora> <agent command="/usr/local/bin/mediatomb-transcode-video" arguments="%in %out"/> <buffer size="14400000" chunk-size="512000" fill-size="120000"/> </profile> </profiles> </transcoding> </config>
paraches@debian:/usr/local/bin$ ls ffmpeg ffprobe mediatomb ffplay ffserver mediatomb-transcode-video paraches@debian:/usr/local/bin$ cat mediatomb-transcode-video #!/bin/bash FFMPEG_PATH="/usr/local/bin/ffmpeg" INPUT="$1" OUTPUT="$2" VIDEO_CODEC="mpeg2video" VIDEO_BITRATE="1024k" VIDEO_FRAMERATE="25" AUDIO_CODEC="mp2" AUDIO_BITRATE="128k" AUDIO_SAMPLERATE="44100" AUDIO_CHANNELS="2" FORMAT="dvd" exec "${FFMPEG_PATH}" -i "${INPUT}" -vcodec ${VIDEO_CODEC} -b ${VIDEO_BITRATE} \ -r ${VIDEO_FRAMERATE} -acodec ${AUDIO_CODEC} -ab ${AUDIO_BITRATE} -ar ${AUDIO_SAMPLERATE} \ -ac ${AUDIO_CHANNELS} -f ${FORMAT} - > "${OUTPUT}" paraches@debian:/usr/local/bin$
-vcodec が mpeg2video になって、-format が dvd になる。大抵の DVD プレーヤーならこれでいけるらしい。
早速、前に PS3 で見られなかったファイルを試してみると、今度は「非対応データ」にならずにムービーが始まった!
因に「非対応データ」になるファイルのコーデック?は wmv2 だった。wmv3 なら大丈夫なのに…。
他にも .mkv なんかは video/x-matroska をトランスコードするようにすれば PS3 でも見られるようになるはず。