Primeiro, você precisará de uma configuração realmente poderosa para fazer isso, dependendo de quais formatos o seu televisor suporta. Eu costumava usar o stream para ps3 e tive que quase transcodificar tudo.
Para adicionar legendas, você pode usar 'vlc' com o parâmetro '--sub-autodetect-file'.
Você precisará habilitar a transcodificação para mediatomb, há um documento inteiro no site do mediatomb que descreve como habilitar a transcodificação: link
Eu recomendaria usar um script em vez de chamar diretamente o comando vlc, assim você pode fazer alterações fáceis no seu script sem precisar reiniciar o mediatomb.
No final, este foi o script que funcionou melhor para mim, no ps3, mas, novamente, você precisará fazer alterações dependendo do que sua TV suporta.
#!/bin/bash -x
VLC='which vlc'
MEDIAINFO='which mediainfo'
XMLSTAR='which xmlstarlet'
INPUT="$1"
OUTPUT="$2"
VIDEO_CODEC="mpgv"
VIDEO_BITRATE="4096"
VIDEO_FRAMERATE="25"
AUDIO_CODEC="a52"
AUDIO_BITRATE="192"
AUDIO_SAMPLERATE="48000"
AUDIO_CHANNELS="2"
FORMAT="ps"
SUBTITLE_LANGUAGE="nl"
VLC_VID_OPT="vcodec=${VIDEO_CODEC},vb=${VIDEO_BITRATE},fps=${VIDEO_FRAMERATE},soverlay,threads=2"
AUDIO_FORMAT='${MEDIAINFO} --Output=XML "${INPUT}" | ${XMLSTAR} sel -t -m ".//track[@type='Audio']" -v "Format"'
case ${AUDIO_FORMAT} in
"AC-3" | "MPEG Audio" )
VLC_AUD_OPT="audio-sync" ;;
* )
VLC_AUD_OPT="acodec=${AUDIO_CODEC},ab=${AUDIO_BITRATE},samplerate=${AUDIO_SAMPLERATE},channels=${AUDIO_CHANNELS},audio-sync" ;;
esac
exec "${VLC}" -v "${INPUT}" -I dummy --sout "#transcode{${VLC_VID_OPT},${VLC_AUD_OPT}}:standard{mux=${FORMAT},access=file,dst=${OUTPUT}}" --sub-autodetect-file --sub-autodetect-fuzzy=1 --freetype-rel-fontsize=18 --sout-mux-caching=1500 --file-caching=1500 vlc:quit
exit 0
nota: usa pacotes extras como mediainfo & amp; xmlstarlet.
edit: isso é um monte de perguntas! Em primeiro lugar, eu não uso mais mediatomb porque era instável, aparentemente você tem o mesmo problema que depois de algum tempo não é mais acessível através dlna / upnp.
Enfim, sugiro que você adicione log no script para que você possa ver o que está acontecendo. Normalmente você deve ter suas legendas em todos os lugares, não apenas em um dispositivo e não em outro.
Funciona de outra maneira para tipos de arquivo / mídia, provavelmente você está apenas transcodificando um determinado intervalo de arquivos porque funciona com alguns e não com outros.