Debianのamd64用なので他で使えるかは不明。
mediatomb_0.12.1-4+patch_amd64.tar
tarで解凍してdpkg -iで入れれば使える、と思う。
mediatomb-dbgは要らないはず。
- 元はmediatomb_0.12.1-4
- mediatomb-seek.patchを適用
- ffmpeg APIでエラーが出たので修正してbuild
- ffmpegのバージョン違いで動かないかも
sudo vi /etc/apt/source.list
deb http://www.deb-multimedia.org wheezy main #追記ソース取得。
sudo apt-get update
sudo apt-get build-dep mediatomb
apt-get souce mediatomb
./configure
make
sudo checkinstall
ここまで。<?xml version="1.0" encoding="UTF-8"?> <config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd"><!-- Read /usr/share/doc/mediatomb-common/README.gz section 6 for more information on creating and using config.xml configration files. --> <server> <ui enabled="yes" show-tooltips="yes"> <accounts enabled="no" session-timeout="30"> <account user="mediatomb" password="mediatomb"/> </accounts> </ui> <name>infinibit</name> <udn>uuid:199b2aad-3ff9-4b7f-b4e6-13e490cb7a90</udn> <home>/var/lib/mediatomb</home> <webroot>/usr/share/mediatomb/web</webroot> <storage caching="yes"> <sqlite3 enabled="no"> <database-file>mediatomb.db</database-file> </sqlite3> <mysql enabled="yes"> <host>localhost</host> <username>mediatomb</username> <password>mediatomb</password> <database>mediatomb</database> </mysql> </storage> <protocolInfo extend="yes"/><!-- For PS3 support change to "yes" --><!-- Uncomment the lines below to get rid of jerky avi playback on the DSM320 or to enable subtitles support on the DSM units --><!-- <custom-http-headers> <add header="X-User-Agent: redsonic"/> </custom-http-headers> <manufacturerURL>redsonic.com</manufacturerURL> <modelNumber>105</modelNumber> --><!-- Uncomment the line below if you have a Telegent TG100 --><!-- <upnp-string-limit>101</upnp-string-limit> --> <extended-runtime-options> <ffmpegthumbnailer enabled="yes"> <thumbnail-size>160</thumbnail-size> <seek-percentage>5</seek-percentage> <filmstrip-overlay>yes</filmstrip-overlay> <workaround-bugs>no</workaround-bugs> </ffmpegthumbnailer> <mark-played-items enabled="no" suppress-cds-updates="yes"> <string mode="prepend">*</string> </mark-played-items> </extended-runtime-options> </server> <import hidden-files="no"> <filesystem-charset>UTF-8</filesystem-charset> <metadata-charset>CP932</metadata-charset> <scripting script-charset="UTF-8"> <common-script>/usr/share/mediatomb/js/common.js</common-script> <playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script> <virtual-layout type="js"> <import-script>/usr/share/mediatomb/js/import.js</import-script> <dvd-script>/usr/share/mediatomb/js/import-dvd.js</dvd-script> </virtual-layout> </scripting> <mappings> <extension-mimetype ignore-unknown="no"> <map from="mp3" to="audio/mpeg"/> <map from="ogg" to="application/ogg"/> <map from="asf" to="video/x-ms-asf"/> <map from="asx" to="video/x-ms-asf"/> <map from="wma" to="audio/x-ms-wma"/> <map from="wax" to="audio/x-ms-wax"/> <map from="wmv" to="video/x-ms-wmv"/> <map from="wvx" to="video/x-ms-wvx"/> <map from="wm" to="video/x-ms-wm"/> <map from="wmx" to="video/x-ms-wmx"/> <map from="m3u" to="audio/x-mpegurl"/> <map from="pls" to="audio/x-scpls"/> <map from="flv" to="video/x-flv"/> <map from="mka" to="audio/x-matroska"/><!-- Uncomment the line below for PS3 divx support --><!-- <map from="avi" to="video/divx"/> --><!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 --><!-- <map from="avi" to="video/avi"/> --> <map from="ts" to="video/mpeg2ts"/> <map from="mpg" to="video/mpeg"/> <map from="mpeg" to="video/mpeg"/> <map from="mkv" to="video/x-matroska"/> <map from="mp4" to="video/mp4"/> <map from="avi" to="video/x-msvideo"/> </extension-mimetype> <mimetype-upnpclass> <map from="audio/*" to="object.item.audioItem.musicTrack"/> <map from="video/*" to="object.item.videoItem"/> <map from="image/*" to="object.item.imageItem"/> <map from="application/ogg" to="object.item.audioItem.musicTrack"/> </mimetype-upnpclass> <mimetype-contenttype> <treat mimetype="audio/mpeg" as="mp3"/> <treat mimetype="application/ogg" as="ogg"/> <treat mimetype="audio/x-flac" as="flac"/> <treat mimetype="image/jpeg" as="jpg"/> <treat mimetype="audio/x-mpegurl" as="playlist"/> <treat mimetype="audio/x-scpls" as="playlist"/> <treat mimetype="audio/x-wav" as="pcm"/> <treat mimetype="audio/L16" as="pcm"/> <treat mimetype="video/x-msvideo" as="avi"/> <treat mimetype="video/mp4" as="mp4"/> <treat mimetype="audio/mp4" as="mp4"/> <treat mimetype="application/x-iso9660" as="dvd"/> <treat mimetype="application/x-iso9660-image" as="dvd"/> <treat mimetype="video/x-matroska" as="mkv"/> <treat mimetype="audio/x-matroska" as="mka"/> </mimetype-contenttype> </mappings> <online-content><!-- Make sure to setup a transcoding profile for flv --> <YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="mp4" hd="yes"> <favorites user="mediatomb"/> <standardfeed feed="most_viewed" time-range="today"/> <playlists user="mediatomb"/> <uploads user="mediatomb"/> <standardfeed feed="recently_featured" time-range="today"/> </YouTube> <Weborama enabled="no" refresh="28800" update-at-start="no"> <playlist name="Active" type="playlist" mood="active"/> <playlist name="Metal" type="playlist"> <filter> <genres>metal</genres> </filter> </playlist> </Weborama> <AppleTrailers enabled="no" refresh="43200" update-at-start="no" resolution="640"/> </online-content> </import> <transcoding enabled="yes"> <mimetype-profile-mappings> <transcode mimetype="video/mpeg2ts" using="ffmpeg"/> <transcode mimetype="video/mpeg" using="ffmpeg"/> <transcode mimetype="video/x-matroska" using="ffmpeg"/> <transcode mimetype="video/mp4" using="ffmpeg"/> <transcode mimetype="video/x-msvideo" using="ffmpeg"/> <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="ffmpeg" enabled="yes" type="external"> <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=10;DLNA.ORG_CI=0</mimetype> <!-- <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0</mimetype> --> <accept-url>yes</accept-url> <first-resource>yes</first-resource> <accept-ogg-theora>yes</accept-ogg-theora> <agent command="/home/yoyo/mediatomb-ffmpeg-video" arguments="%in %out %seconds" can-seek="yes" /> <buffer size="14400000" chunk-size="512000" fill-size="128000"/> </profile> <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="no" 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>
<mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=10;DLNA.ORG_CI=0</mimetype>のDLNA.ORG_OP=10にしてタイムシーク有効ってことにするのと、
<agent command="/home/yoyo/mediatomb-ffmpeg-video" arguments="%in %out %seconds" can-seek="yes" />で%secondsとcan-seek="yes"を書いておくのがポイント。
以上設定で、#!/bin/bash time_ss=`echo "${3} - 2" | bc` #width=`/usr/bin/mediainfo --Inform=Video\;%Width% "${1}"` #height=`/usr/bin/mediainfo --Inform=Video\;%Height% "${1}"` #dar=`/usr/bin/mediainfo --Inform=Video\;%DisplayAspectRatio% "${1}"` stream_info=`/usr/local/bin/ffprobe -show_streams "${1}" 2>&1` dar=`echo "$stream_info" | sed -e '/display_aspect_ratio/!d; s/^display_aspect_ratio=\([0-9]*:[0-9]*\).*/\1/' | sed 's/\:/\//'|bc -l` width=`echo "$stream_info" | sed -e '/width=/!d; s/^width=\([0-9]*\).*/\1/'` height=`echo "$stream_info" | sed -e '/height=/!d; s/^height=\([0-9]*\).*/\1/'` echo ------ $width x $height DAR:$dar if [ `echo "$dar == 0" | bc` -eq 1 ] ; then dar=`echo "$width/$height" | bc -l` echo ------ No DAR detected. overwrite by: $dar fi #target aspect ratio tar=1.7777 comp_wide=1.78 comp_narrow=1.77 is_wide=0 is_narrow=0 pad=0 if [ `echo "$dar > $comp_wide" | bc` -eq 1 ] ; then # needs bars top and bottom is_wide=1 pad=$(echo "scale=2; (($width/$tar)-$height)/2" | bc | awk -F '.' '{ print $1; exit; }' ) fi if [ `echo "$dar < $comp_narrow" | bc` -eq 1 ] ; then # needs bars left and right is_narrow=1 pad=$(echo "scale=2; (($height*$tar)-$width)/2" | bc | awk -F '.' '{ print $1; exit; }' ) fi mod=$(($pad%2)) compmod=1 if [ "$mod" -eq "$compmod" ] ; then # pad must be an even number pad=$((pad+1)) fi # Make sure the ffmpeg path is correct if [ "$is_wide" -eq 1 ] ; then # bars top and bottom echo ------ bars top and bottom echo ------ PAD: $pad exec "/usr/local/bin/ffmpeg" -ss "$time_ss" -i "${1}" -f mpegts -vcodec mpeg2video -b:v 8192k -acodec mp2 -b:a 256k -ar 44100 -ac 2 -vf "pad=0:$(($pad*2+$height)):0:$pad, scale=1280:720" -aspect 4:3 -threads 4 - > "${2}" elif [ "$is_narrow" -eq 1 ] ; then # bars left and right echo ------ bars left and right echo ------ PAD: $pad exec "/usr/local/bin/ffmpeg" -ss "$time_ss" -i "${1}" -f mpegts -vcodec mpeg2video -b:v 8192k -acodec mp2 -b:a 256k -ar 44100 -ac 2 -vf "pad=$(($pad*2+$width)):0:$pad:0, scale=1280:720" -aspect 4:3 -threads 4 - > "${2}" else # no bars echo ------ no bars exec "/usr/local/bin/ffmpeg" -ss "$time_ss" -i "${1}" -f mpegts -vcodec mpeg2video -b:v 8192k -acodec mp2 -b:a 256k -ar 44100 -ac 2 -s 1280x720 -aspect 4:3 -threads 4 - > "${2}" fi