MediaTomb rápido redimensionar imagem

1

O objetivo é configurar o MediaTomb para redimensionar (quase) instantaneamente um jpeg de 4-7 MB de sua resolução original de 8 ou 12MP para algo em torno de 1280x * para que ele possa ser visualizado em um dispositivo móvel.

Informações sobre minha configuração: VM executando arco com MediaTomb e outra VM executando arco e servidor BubbleUPnP para me permitir conectar a todos os meus servidores UPnP em casa onde quer que eu esteja. O problema é que não quero converter todas as fotos que faço em viagens. Eu simplesmente quero procurá-los remotamente e ter as imagens redimensionadas com rapidez suficiente para que eu não note um atraso ao exibir / visualizar imagens. Obviamente, o redimensionamento também diminui o tempo necessário para exibi-los.

Eu tentei usar o Imagemagick e ele é muito lento (5 a 10 segundos por foto) e ffmpeg é inadequado para imagens acima de 5.000px. Quais são minhas opções aqui?

VM 1: 2x3.00Ghz, 768mb de RAM (MediaTomb) VM 2: 2x3.00Ghz, 512mb de RAM (XBMC, BubbleUPnP)

Script de redimensionamento de imagem original contido:

convert "$1" -filter lanczos -resize 1280x* "$2"

No mediatomb config.xml, adicionei o seguinte às suas seções apropriadas:
Em mapeamentos de perfil-tipo-mime:

<transcode mimetype="image/jpeg" using="jpeg-small"/>

E sob perfis:

<profile name="jpeg-small" enabled="yes" type="external">
  <mimetype>image/jpeg</mimetype>
  <agent command="convert" arguments="%in -resize 1280x1280 %out"/>
  <hide-original-resource>yes</hide-original-resource>
  <buffer size="10485760" chunk-size="131072" fill-size="2621440"/>
  <accept-url>no</accept-url>
  <first-resource>yes</first-resource>
</profile>

ATUALIZAÇÃO: Agora "funciona", mas só consigo encontrar imagens abaixo de 200 x 200 quando eu navego no compartilhamento do MediaTomb de um cliente UPnP. Não tenho certeza porque, como eu estou dizendo para fazer 1280 o comprimento máximo de um lado.

    
por KG6ZVP 19.03.2014 / 02:52

2 respostas

1

Parece que mediatomb tem seu próprio método para fazer isso internamente. Talvez isso faça o que você quer.

/etc/mediatomb/config.xml :

  <transcoding enabled="yes">
    <mimetype-profile-mappings>
      <transcode mimetype="image/jpeg" using="jpeg-small"/>
    </mimetype-profile-mappings>
    <profiles>
      <profile name="jpeg-small" enabled="yes" type="external">
        <mimetype>image/jpeg</mimetype>
        <agent command="/opt/jpeg-resize.sh" arguments="%in %out"/>
        <accept-url>no</accept-url>
        <first-resource>yes</first-resource>
        <hide-original-resource>no</hide-original-resource>
        <buffer size="4000000" chunk-size="20000" fill-size="20000"/>
        <resolution>1920x1080</resolution>
      </profile>
    </profiles>
  </transcoding>

Você pode redimensionar usando esse script, /opt/jpeg-resize.sh :

#!/bin/bash
echo "---------" >> /opt/jpeg-resize.log
echo "Input  "$1 >> /opt/jpeg-resize.log
echo "Output "$2 >> /opt/jpeg-resize.log
cat "$1" | convert - -quality "75" -resize "1920x1080" fd:1 > "$2"

Fonte: Transcreva o JPG para uma resolução mais baixa .

Depuração de mediatomb

Se você estiver com problemas para determinar o que o mediatomb está fazendo, você poderá iniciá-lo no modo de depuração para obter uma saída mais detalhada.

$ mediatomb -D
    
por 19.03.2014 / 04:02
0

Você não especificou como está usando o Imagemagick, mas não há motivo para que ele seja tão lento. Eu apenas testei isso no meu laptop (i7, 2.67 GHz) e converti um 6.1MB .jpg para um 238K em menos de um segundo:

$ time convert -resize 577x577 foo.jpg bar.jpg 

real    0m0.883s
user    0m1.712s
sys     0m0.060s
$ ls -lh
total 6420
-rw-r--r-- 1 terdon terdon  238K Mar 19 03:24 bar.jpg
-rw-r--r-- 1 terdon terdon  6.1M Mar 19 03:17 foo.jpg

Basta brincar com as várias opções para obter uma que atenda às suas necessidades.

    
por 19.03.2014 / 03:25