Mediatomb unter Linux und FritzMedia 8020

deta

Mitglied
Mitglied seit
24 Mai 2004
Beiträge
237
Punkte für Reaktionen
0
Punkte
0
Hallo!

Hat jemand zufällig auch den Mediatomb unter Linux als Server laufen?

ich hab das Problem, das die Bilder zwar alle sauber über die 8020 angezeigt werden.
Aber nur sehr Winzig!...

Hat jemand ne Idee?

cu Deta
 
Hallo Deta!

Ich betreibe einen Mediatomb auf der NSLU2. Dieser stellt bei JPEG-Bildern mit EXIF-Informationen nicht nur das Bild dem upnp-Client zur Verfügung, sondern zusätzlich auch das Vorschaubild (192x256 Pixel) aus den EXIF-Infos. Da die FritzMedia 8020 z.Z. noch Probleme bei Bildern hat zeigt diese dann nur das Vorschaubild an.
Nach meinen Versuchen dürfen Bilder nicht größer als 800x800 Pixel sein. Die Umschaltung zwisch Hoch- und Querformat wird automatisch durchgeführt.
Meine Tests konzentrieren sich jetzt auf das Transkodieren der Bilder durch Mediatomb. Üblicherweise erfolgt das mit der Convert-funktion von ImageMagick. Bei der NSLU2 dauert das aber sehr lange und ist für diesen Zweck nicht zu gebrauchen. Der aktuelle Lösungsansatz arbeitet mit djpeg und cjpeg.

KurtSohn
 
Hallo!

Ja, danke für die Info!
Nur leider ist es immer noch keine Lösung! Einen upnp Server hab ich unter Linux nicht gefunden, der es perfekt in Verbindung mit der FritzMedia darstellt.

Mfg
Deta
 
Hallo Deta,
hier mal ein Lösungsansatz:

1.ändern der "/opt/etc/mediatomb/config.xml" von mediatomb:
1.1 transkodieren einschalten
Code:
<transcoding enabled="yes">
1.2 mime-type für das Transcodieren hinzufügen
Code:
    <mimetype-profile-mappings>
        .
        .
      <transcode mimetype="image/jpeg" using="resizejpeg"/>
        .
        .
    </mimetype-profile-mappings>
1.3 Neues Profil unter <profiles> anlegen
Code:
      <profile name="resizejpeg" enabled="yes" type="external">
        <mimetype>image/jpeg</mimetype>
        <resolution>800x800</resolution>
        <first-resource>yes</first-resource>
        <hide-original-resource>no</hide-original-resource>
        <agent command="resize.sh" arguments="%in %out"/>
        <buffer size="262144" chunk-size="2048" fill-size="16384"/>
      </profile>
2. das Script "/opt/bin/resize.sh" erzeugen und ausführber machen
Code:
#!/bin/sh

INPUT="$1"
OUTPUT="$2"

djpeg -scale 1/8 "${INPUT}"|cjpeg > "${OUTPUT}"
3. Mediatomb neu starten

4. Bilderordner mit dem WEB-Tool aktualisieren

Hinweis:
Wenn ich jetzt keinen sCHREIBfehler hatte sollte es so funktionieren.
Verzeichnisangeben beziehen sich auf die NSLU2!
Die Parameter des Buffers sind experimentell.

Das Prinzip "Transcodieren mit externem Script" wird u.a. hier beschrieben.

KurtSohn
 
danke werde ich am Wochenende mal probieren!

Vorher hab ich keine Zeit.. Gebe dir dann bescheid!

Wäre schön wenn es dann gehen würde.

cu Deta
 
Hallo

So habs nun getestet!

Der Ansatz ist gut, aber nicht viel mehr...

Was ist passiert ...

Die Vorschaubilder sind etwas größer! Ist schon gut!
Aber wenn du dann die Bilder im Großformat anschauen willst, dann
hat sich nix geändert drann, sind nun kleiner als das Vorschaubild *g*

Also kurz zusammengefasst, die Vorschaubilder etwas größer und
am großen Bild nix verändert.

cu Deta
 
Hallo Deta,

dann passe doch mal den Faktor für die Verkleinerung an. Damit meine ich das scale-Argument im djpeg-Befehl, hier 1/8. Dadurch wird der Multiplikator für die Zielauflösung festgelegt. Definition (lt. djpeg) X/8 (X ist ganzzahlig) mit 0 < X <= 16; ab X > 8 wird das Bild vegrößert. Wenn "S" die größere Seite des Bildes bezeichnet, ergibt sich für 800 Bildschirmpunkte X=800*8/S.
Bsp.:

Bildröße: 2048 x 1536
X = 800*8/2048
X = 3,125
Code:
djpeg -scale 3/8 ...
Ist es jetzt besser?
 
Hallo!

So habs nun mal heute etwas testen können!
Hab bis auf 6/8 hochgezogen! So wird mein Flatt fast komplett ausgenutzt.

Hast du noch ne Idee, ob man mov Dateien auch noch über die Mediabox anzeigen lassen kann! Sind Videos von der Cam.

Und Danke erst mal bis hier her..

cu Deta
 
Hallo!

Was mir auch noch aufgefallen ist, das Bilder die eine sehr hohe Auflösung haben,
dann nicht mehr Angezeigt werden beim Vollbild. Diese sind von der Dateigröße auch um die 1 MB groß. Die orginalen Files.

Mfg
Deta
 
Hallo Deta,

hier kannst du sehen, dass das Skalierungsverhältnis für jedes Bild separat berechnet werden muss. Ich kann dir meinen C-Quelltext zur Verfügung stellen, wenn das hilft.

Um Video-Dateien auf der FritzMedia darzustellen, benötigt man eine Software die WMV9-Files unter Linux erzeugen kann. Da kenn ich aber z.Z. keine. Bei meiner NSLU2 fehlen dafür auch die erforderlichen Ressourcen, daher kein Thema für mich.

KurtSohn
 
Hallo Deta,

hier kannst du sehen, dass das Skalierungsverhältnis für jedes Bild separat berechnet werden muss. Ich kann dir meinen C-Quelltext zur Verfügung stellen, wenn das hilft.


KurtSohn

Mh! Weis ich ganz genau nicht was du meinst... Wo was dann geändert werden muss..

cu Deta
 
Hallo Deta,

du hast jetzt ein konstantes Verhältnis von 6/8 eingestellt. Hat ein Bild mehr als 1066 Pixel, so kann dieses nicht mehr angezeigt werden (da 1067*6/8 > 800 Pixel). Für diese Bild ist dann ein Faktor von 5/8 erforderlich. Um ein manuelles umstellen für unterschiedliche Bildgrößen zu umgehen, ist es erforderlich diesen Faktor für jedes Bild einzeln zu berechnen. Als Grundlage dafür verwende ich die Anzahl der Pixel aus der Höhe und Breite des Bildes.
Im angehängten Archiv befindet sich der Quelltext für ein Programm, welches für jedes Bild den Faktor ermittelt und den nötigen 8-tel-Bruch ausgibt.

1. Archiv entpacken
2. compile.sh aufrufen ("gcc" erforderlich)
3. die Datei "resizeva" in das "bin"-Verzeichnis kopieren
4. "resize.sh" ändern
Code:
djpeg -scale `resizeva "${INPUT}"` "${INPUT}"|cjpeg > "${OUTPUT}"
Nun berechnet "resizeva" den optimale Faktor für das Bild in "INPUT" und gibt es als "scale"-Argument weiter. Erst danach wird der "djpeg"-Befehl ausgeführt.

Prinzipbedingt funktioniert die Bildausgabe jetzt für Bilder bis zu einer Größe von 6400 Pixel.

KurtSohn
 

Anhänge

  • resizeva.tar.gz
    1.3 KB · Aufrufe: 32
Hallo KurtSohn,

danke für das File. Habs genau so gemacht!
Die Vorschaubilder werden nun angezeigt!
Nur die Vollbilder dann überhaupt nicht mehr!
Egal welche Auflösung.

cu Deta
 
Hallo Deta,
sorry das ist mein Fehler. Ich habe etwas gebraucht um darauf zu kommen, aber eine Änderung habe ich schon vor einer Weile durchgeführt.
Die letzte Version der libjpeg-library ist 6b von 1998. Diese scaliert nur 1/1, 1/2, 1/4, 1/8. Allerdings gibt es eine erweiterte Version auf http://jpegclub.org/, welche die Erweiterung zum Scalieren besitzt.

1. "jpegcrop.tar.gz" von http://jpegclub.org/exifpatch.html laden
2. djpeg, cjpeg aus dem Verzeichnis "jpegcrop\jpeg-6b" testen ob sie auf deiner Maschine laufen, z.B. mit ./cjpeg -h -> option -scale muss zu finden sein (bei mir nicht -> neu compilieren)
3. im "bin"-Verzeichnis cjpeg in cjpeg6b umbenennen (als Sicherheitskopie) djpeg natürlich auch.
4. die neuen Dateien in das "bin"-Verzeichnis kopieren

KurtSohn
 
Zuletzt bearbeitet:
Hallo!

Habs glad so mal probiert und umgesetzt!

Aber leider das selbe ergebniss! Die Vorschaubilder sind da!
Aber die großen Bilder dann in der DiaShow z.b. nicht! Dunkel!

Eventuell liegts daran, das bei mir das cjepg nicht unter /bin ist sonder unter
/usr/bin

Hab den MediaTomb auch neu gestartet und die Verzeichnisse neu eingebunden!

cu Deta
 
Hallo Deta,
die Sache mit den "bin"-Verzeichnis kann ich nur für mich angeben (siehe Post vom 10.04.08) - deswegen habe ich es in Hochkommas gesetzt (sonst nochmal im WIKI schauen, auch 10.04.08). Für djpeg und cjpeg ist es ja einfach: genau da, wo die Originale sind, und "resizeva" am Einfachsten auch. Prüfe besser noch die Berechtigungen, mediatomb läuft bei mir mit root-Rechten.
Wenn alles stimmt, dann kannst du nur den Fehler durch manuelles Ausführen der Befehle eingrenzen.

1. Nimm ein Bild, größer als 800x800 Pixel (hier "test.jpg").

2. Test1: djpeg und cjpeg OK?
Code:
djpeg test.jpg | cjpeg > out1.jpg
Ist Bild out1.jpg da und gleich (Dateigröße etwa gleich)?

3. Test2: Richtiges djpeg?
Code:
djpeg -scale 6/8 test.jpeg | cjpeg > out2.jpg
Existiert out2.jpg und ist es kleiner als out1.jpg?

4. Test3: Die "resizeva"-Funktion?
Code:
resizeva test.jpg
Liefert die Funktion ein Ergebnis in der Form X/8 und stimmt es auch? Kontrolle siehe Post vom 11.04.08

5. Test4: Dann alles komplett.
Code:
djpeg -scale `resizeva test.jpg` test.jpg | cjpeg > out3.jpg
out3.jpg existiert und ist kleiner als out1.jpg?

6. Test5: Das "resize.sh"-Script?
Code:
resize.sh test.jpg out4.jpg
Ist out4.jpg gleich out3.jpg?

Fällt ein Test mit NEIN durch, dann sollte an dieser Stelle der Fehler liegen.

KurtSohn
 
1. Nimm ein Bild, größer als 800x800 Pixel (hier "test.jpg").

2. Test1: djpeg und cjpeg OK?
Code:
djpeg test.jpg | cjpeg > out1.jpg
Ist Bild out1.jpg da und gleich (Dateigröße etwa gleich)?

Etwas kleiner
-rwxr-xr-x 1 deta deta 1033599 2008-01-11 14:05 cimg0115.jpg
-rw-r--r-- 1 deta deta 701895 2008-04-24 21:14 out1.jpg

3. Test2: Richtiges djpeg?
Code:
djpeg -scale 6/8 test.jpeg | cjpeg > out2.jpg
Existiert out2.jpg und ist es kleiner als out1.jpg?

Ja ist es.
-rw-r--r-- 1 deta deta 701895 2008-04-24 21:14 out1.jpg
-rw-r--r-- 1 deta deta 365093 2008-04-24 21:17 out2.jpg


4. Test3: Die "resizeva"-Funktion?
Code:
resizeva test.jpg
Liefert die Funktion ein Ergebnis in der Form X/8 und stimmt es auch? Kontrolle siehe Post vom 11.04.08
Ja macht er
deta@deta:~/resizevalue$ ./resizeva /home/deta/test/cimg0115.jpg
2/8

5. Test4: Dann alles komplett.
Code:
djpeg -scale `resizeva test.jpg` test.jpg | cjpeg > out3.jpg
out3.jpg existiert und ist kleiner als out1.jpg?
Hier hat er ein Problem!
deta@deta:~/test$ djpeg -scale `resizeva cimg0115.jpg` | cjpeg > out3.jpg bash: resizeva: command not found
usage: djpeg [switches] [inputfile]
Switches (names may be abbreviated):
-colors N Reduce image to no more than N colors
-fast Fast, low-quality processing
-grayscale Force grayscale output
-scale M/N Scale output image by fraction M/N, eg, 1/8
-bmp Select BMP output format (Windows style)
....
Empty input file

6. Test5: Das "resize.sh"-Script?
Code:
resize.sh test.jpg out4.jpg
Ist out4.jpg gleich out3.jpg?

Und hier kommt das
deta@deta:~/test$ resize.sh cimg0115.jpg out4.jpg
resize.sh missing file name.
type 'resize.sh -h' for help.



cu Deta
 
Hallo!

Hab den Fehler gefunden!
Muste es nich /bin kopieren und dann ging es....

Klasse Arbeit!

Und wenn man nu noch eine Möglichkeit für die Videos findet ist es Megaklasse.

Ich werde mal mich umschauen nach einen konvertierprogram


Danke noch mal.

cu Deta
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.