# DLNA Renderer for Linux Console



## kodak (7. März 2011)

Hi Leute,

folgendes Problem:
ich habe einen kleinen Linuxserver ohne Peripherie bei mir stehen. Das heißt, ich greeife nur über Netzwerk auf ihn zu.
Da er aber eine Soundkarte hat, möchte ich ihn als MediaRenderer für Musik verwenden, um nicht immer das TV Gerät anschalten zu müssen. Jetzt bin ich nur noch auf der Suche nach einem Dienst, der per DLNA die Musik entgegen nimmt und ausgibt.

Kennt ihr ein geeigentes Programm, welches nicht unbedingt X11 braucht?

GMediaRender ist eine Möglichkeit, aber die kann nicht ordneltich kompilliert werden. Es gibt auch andere, die damit unter Ubuntu Pobleme haben. Aber das kann doch nicht das einzige Programm sein ... oder?

Als DLNA Server und Controlpoint verwende ich Twonky-Software. Es gibt von Twonky zwar den Media Manager, der auch als renderer funktioniert, aber der braucht Windows. Wäre mit Wine sicher auch nicht das Problem, aber ich will möglichst ohne X11 arbeiten.

Grüße
Kodak


----------



## deepthroat (8. März 2011)

Hi.

Suchmaschinen sind dir wohl zu suspekt? ;-]

http://elinux.org/DLNA_Open_Source_Projects

Gruß


----------



## kodak (8. März 2011)

ja, genauso suspekt wie Dir das Befassen mit dem Thema und das Bewerten des Suchergebnisses bezüglich der genannten Anforderung. 

Über die Suchmaschine habe ich bereits den GMediaRenderer/GMediaPlayer gefeunden, der, wie bereits geschrieben, sich nicht übersetzten lässt.
Coharence ist auch nur ein Plugin, aber kein eigenständiger Renderer.

Zu Deinem Suchergebnis:
Die Seite bietet zwar DLNA/UPnP Clients an, aber was ich brauche, ist ein fernsteuerbarer Renderer. XBMC oder Amarok bieten zwar solche Funktionen an, aber es sind alles Desktop Programme.

Das was ich suche ich ein DLNA/UPnP Renderer als Dienst/Deamon.


----------



## deepthroat (8. März 2011)

kodak hat gesagt.:


> ja, genauso suspekt wie Dir das Befassen mit dem Thema und das Bewerten des Suchergebnisses bezüglich der genannten Anforderung.


Sorry, du hast nicht ausreichend deutlich gemacht, das du bereits ausgiebig gesucht hast.


kodak hat gesagt.:


> Über die Suchmaschine habe ich bereits den GMediaRenderer/GMediaPlayer gefeunden, der, wie bereits geschrieben, sich nicht übersetzten lässt.


Warum? Evtl. machst du etwas falsch.

Gruß


----------



## Adrian_Broher (8. März 2011)

kodak hat gesagt.:


> GMediaRender ist eine Möglichkeit, aber die kann nicht ordneltich kompilliert werden.


 
Und das heisst konkret in Fehlermeldungen/Compilelogauszuegen?


----------



## kodak (8. März 2011)

Hi, 

der Fehler beim kompilieren ist:

```
webserver.c:272: error: variable ‘virtual_dir_callbacks’ has initializer but incomplete type
```

In der webserver.c steht an dieser Position:

```
struct UpnpVirtualDirCallbacks virtual_dir_callbacks = {
        webserver_get_info,
        webserver_open,
        webserver_read,
        webserver_write,
        webserver_seek,
        webserver_close
};
```

Leider sind meine C-kenntnisse ziemlich eingerostet. C# verwöhnt etwas *g*

Grüße
Kodak


----------



## deepthroat (8. März 2011)

kodak hat gesagt.:


> Hi,
> 
> der Fehler beim kompilieren ist:
> 
> ...


Das ist vermutlich nicht die ganze/einzige Fehlermeldung. Zeige am besten die ganze Ausgabe von make.

Du hast libupnp installiert?

Gruß


----------



## kodak (8. März 2011)

Hi,
libupnp-dev ist installiert. Der GStreamer auch, der ließ sich kompillieren und installieren.

hier ist die make-Ausgabe. Einige Objekte wurden schon erfolgreich kompilliert und werden nicht mit angezeigt:

```
make  all-recursive
make[1]: Betrete Verzeichnis '/home/benjamin/src/gmediarender-0.0.6'
Making all in src
make[2]: Betrete Verzeichnis '/home/benjamin/src/gmediarender-0.0.6/src'
if gcc -DHAVE_CONFIG_H -I. -I. -I..  -pthread -I/usr/local/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2   -I/usr/include/upnp -DPKG_DATADIR=\"/usr/local/share/gmediarender\"   -Wall -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -MT webserver.o -MD -MP -MF ".deps/webserver.Tpo" -c -o webserver.o webserver.c; \
        then mv -f ".deps/webserver.Tpo" ".deps/webserver.Po"; else rm -f ".deps/webserver.Tpo"; exit 1; fi
webserver.c: In function ‘webserver_register_buf’:
webserver.c:69: warning: implicit declaration of function ‘strlen’
webserver.c:69: warning: incompatible implicit declaration of built-in function ‘strlen’
webserver.c: In function ‘webserver_register_file’:
webserver.c:93: warning: implicit declaration of function ‘strrchr’
webserver.c:93: warning: incompatible implicit declaration of built-in function ‘strrchr’
webserver.c: In function ‘webserver_get_info’:
webserver.c:148: warning: implicit declaration of function ‘strcmp’
webserver.c: In function ‘webserver_read’:
webserver.c:209: warning: implicit declaration of function ‘memcpy’
webserver.c:209: warning: incompatible implicit declaration of built-in function ‘memcpy’
webserver.c: At top level:
webserver.c:272: error: variable ‘virtual_dir_callbacks’ has initializer but incomplete type
webserver.c:273: warning: excess elements in struct initializer
webserver.c:273: warning: (near initialization for ‘virtual_dir_callbacks’)
webserver.c:274: warning: excess elements in struct initializer
webserver.c:274: warning: (near initialization for ‘virtual_dir_callbacks’)
webserver.c:275: warning: excess elements in struct initializer
webserver.c:275: warning: (near initialization for ‘virtual_dir_callbacks’)
webserver.c:276: warning: excess elements in struct initializer
webserver.c:276: warning: (near initialization for ‘virtual_dir_callbacks’)
webserver.c:277: warning: excess elements in struct initializer
webserver.c:277: warning: (near initialization for ‘virtual_dir_callbacks’)
webserver.c:279: warning: excess elements in struct initializer
webserver.c:279: warning: (near initialization for ‘virtual_dir_callbacks’)
make[2]: *** [webserver.o] Fehler 1
make[2]: Verlasse Verzeichnis '/home/benjamin/src/gmediarender-0.0.6/src'
make[1]: *** [all-recursive] Fehler 1
make[1]: Verlasse Verzeichnis '/home/benjamin/src/gmediarender-0.0.6'
make: *** [all] Fehler 2
```

PS: hab nochmal libupnp4 statt libupnp3 probiert ... gleiches Ergebnis


----------



## deepthroat (8. März 2011)

kodak hat gesagt.:


> PS: hab nochmal libupnp4 statt libupnp3 probiert ... gleiches Ergebnis


Welche Version genau? Laut GMediaRenderer Seite wird version 1.6.0 oder höher benötigt.

Ah, ich seh schon, libupnp3 ist 1.6.6 und libupnp4 ist 1.8.

\edit: Es scheint, da gab es eine Umbenennung. UpnpVirtualDirCallback heißt in aktuelleren Versionen von libupnp nur noch VirtualDirCallback.

Füge in webserver.h am Anfang ein:

```
#define UpnpVirtualDirCallback VirtualDirCallback
```

Gruß


----------



## kodak (8. März 2011)

Hi,
leider ist die Meldung noch die gleiche.
Sowohl #define hat nichts geändert, als auch ein direktes Umbenennen in der header, als auch in der Quelle. Wobei ich auch stark annehme, dass, wenn etwas umbenannt wird, die alte Funktion noch beibehalten wird.

Ich habe auch mal die anderen Verionen vom GMediarenderer versucht. Ab 0.4 gibt es diesen Fehler, die 0.3 schlägt aus einem ganz anderen Grund fehl.

Grüße
Kodak


----------



## deepthroat (9. März 2011)

kodak hat gesagt.:


> Hi,
> leider ist die Meldung noch die gleiche.
> Sowohl #define hat nichts geändert, als auch ein direktes Umbenennen in der header, als auch in der Quelle. Wobei ich auch stark annehme, dass, wenn etwas umbenannt wird, die alte Funktion noch beibehalten wird.


Das hätte man evlt. machen können, in libupnp 1.6.12 gibt es allerdings keine Spur mehr von UpnpVirtualDirCallbacks in den Quelldateien.

Übrigens fehlte dort ein s bei dem define. Es hätte heißen müssen:

```
#define UpnpVirtualDirCallbacks VirtualDirCallbacks
```



kodak hat gesagt.:


> Ich habe auch mal die anderen Verionen vom GMediarenderer versucht. Ab 0.4 gibt es diesen Fehler, die 0.3 schlägt aus einem ganz anderen Grund fehl.


Bei mir kompiliert GMediaRenderer 0.0.6 mit libupnp3 1:1.6.6-4 völlig problemlos - ohne irgendwelche Anpassungen. Stelle sicher, dass du die korrekte libupnp Version verwendest.

Gruß


----------



## kodak (9. März 2011)

hm, ich hab keine Idee, wora es noch liegen könnte. 
Libupnp habe ich einmal deinstalliert und auch die libs und header gelöscht. Dann neu installiert, konfiguriert und kompiliert ... same procedure as every year 
Aber Danke für die Hilfe.

Grüße
Kodak


----------



## deepthroat (10. März 2011)

kodak hat gesagt.:


> hm, ich hab keine Idee, wora es noch liegen könnte.
> Libupnp habe ich einmal deinstalliert und auch die libs und header gelöscht. Dann neu installiert, konfiguriert und kompiliert ... same procedure as every year


Ich habe gerade nochmal geschaut. In libupnp 1.6.12 gibt es überhaupt keine öffentliche VirtualDirCallbacks Struktur mehr. Ich weiß nicht in welcher Version diese Änderung durchgeführt wurde, aber es ist doch etwas befremdlich wenn die API mit einer Revision geändert wird - normalerweise bleibt die API innerhalb einer Hauptversion gleich.

Schau doch mal in upnp/upnp.h ungefähr Zeile 946 ob dort eine Struktur namens UpnpVirtualDirCallbacks oder VirtualDirCallbacks definiert wird.

Gruß


----------



## kodak (10. März 2011)

Hallo,

bei mir ist "VirtualDirCallbacks" nichtmehr vorhanden, nur in einer Kommentarzeile bei 2xxx irgendwo weit unten.
Auch in keiner anderen Header ist er vorhanden.
Ich werde einfach mal die von Dir genutzte Version 1.6.6 suchen und es damit nocheinmal versuchen.

Ich sehe gerade, im src Verzeichnis des GMediaRenders ist auch eine upnp.h vorhanden und dort gibt es auch kein "VirtualDirCallbacks". Aber da es bei Dir kompilierte wird das wohl nicht das problem sein.

Grüße
Kodak

PS: *freudensprung* Nu konnte ich es zumindestens einmal kompilieren. Das deinstallieren der libupnp hat nicht das Verzeichnis /usr/local/include/upnp gelöscht. daher hatte der Kompiler vermutlich dort gesucht. libupnp(-dev) 1.6.6 hab ich direkt aus den deb-file installiert und nun gehts. 
Als nächstes geht's an die Konfiguration.


----------

