Dreambox/VlcPlayer: Unterschied zwischen den Versionen
Cbs (Diskussion | Beiträge) |
Cbs (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
==VlcPlayer plugin== | ==VlcPlayer plugin== | ||
− | ===Client Versionen=== | + | === Client Versionen === |
+ | |||
ich hatte probleme mit meinem vlc-player plugin auf der dm800 | ich hatte probleme mit meinem vlc-player plugin auf der dm800 | ||
+ | |||
<pre> | <pre> | ||
uname -a | uname -a | ||
Zeile 10: | Zeile 12: | ||
</pre> | </pre> | ||
− | ===Server Versionen=== | + | |
+ | nach einem update sieht die konfiguration so aus: | ||
+ | |||
+ | <pre> | ||
+ | Linux dm800 2.6.18-7.4-dm800 #1 Tue Mar 22 18:02:59 UTC 2011 7401c0 GNU/Linux | ||
+ | # ipkg list_installed | grep -i vlc | ||
+ | enigma2-plugin-extensions-vlcplayer - 3.1git20110318-r0 | ||
+ | </pre> | ||
+ | |||
+ | ein entsprechender patch findet sich weiter unten im text... | ||
+ | |||
+ | |||
+ | === Server Versionen === | ||
+ | |||
ii vlc 0.8.6-svn20061012.debian-5.1+etch3 | ii vlc 0.8.6-svn20061012.debian-5.1+etch3 | ||
{{Achtung|nach einem upgrade auf lenny geht das ganze nicht mehr!! :-(<br/>dies war aber zum abspielen von HD-videos noetig}} | {{Achtung|nach einem upgrade auf lenny geht das ganze nicht mehr!! :-(<br/>dies war aber zum abspielen von HD-videos noetig}} | ||
+ | |||
+ | nach dem update: | ||
+ | |||
+ | ii vlc 1.0.3-1+opp~1 multimedia player and streamer | ||
+ | ii vlc-nox 1.0.3-1+opp~1 multimedia player and streamer (without X) | ||
wenn man ein lenny benutzt muss man also folgendes repo einbinden: | wenn man ein lenny benutzt muss man also folgendes repo einbinden: | ||
Zeile 54: | Zeile 74: | ||
und alles ist gut und er spielt zumindest .mkv-files | und alles ist gut und er spielt zumindest .mkv-files | ||
+ | |||
=== configuration dm800 === | === configuration dm800 === | ||
+ | |||
# Name des Servers: vlc.lan.mydomain.de | # Name des Servers: vlc.lan.mydomain.de | ||
# Server-Adresse: vlc.lan.mydomain.de | # Server-Adresse: vlc.lan.mydomain.de | ||
# Server-Port: 8080 | # Server-Port: 8080 | ||
+ | |||
=== configuration server === | === configuration server === | ||
+ | |||
Starten des vlc-binary mit folgenden parametern: | Starten des vlc-binary mit folgenden parametern: | ||
vlc -I http --http-host vlc.lan.mydomain.de:8080 -vvv | vlc -I http --http-host vlc.lan.mydomain.de:8080 -vvv | ||
+ | |||
=== problem 1=== | === problem 1=== | ||
+ | |||
# das plugin kann zum server connecten. | # das plugin kann zum server connecten. | ||
# ich kann durch die verzeichnis-struktur browsen | # ich kann durch die verzeichnis-struktur browsen | ||
Zeile 83: | Zeile 109: | ||
ich aendere also meine configuration folgendermassen: | ich aendere also meine configuration folgendermassen: | ||
+ | |||
=== configuration dm800 === | === configuration dm800 === | ||
+ | |||
# Name des Servers: vlc.lan.mydomain.de | # Name des Servers: vlc.lan.mydomain.de | ||
# Server-Adresse: vlc.lan.mydomain.de | # Server-Adresse: vlc.lan.mydomain.de | ||
# Server-Port: 8081 | # Server-Port: 8081 | ||
+ | |||
=== configuration server === | === configuration server === | ||
+ | |||
Starten des vlc-binary mit folgenden parametern: | Starten des vlc-binary mit folgenden parametern: | ||
vlc -I http --http-host vlc.lan.mydomain.de:8081 -vvv | vlc -I http --http-host vlc.lan.mydomain.de:8081 -vvv | ||
+ | |||
=== problem 2=== | === problem 2=== | ||
+ | |||
# das plugin kann zum server connecten. | # das plugin kann zum server connecten. | ||
# ich kann durch die verzeichnis-struktur browsen | # ich kann durch die verzeichnis-struktur browsen | ||
Zeile 104: | Zeile 136: | ||
<u>folglich:</u><br/> | <u>folglich:</u><br/> | ||
# die dm800 versuchte den stream vom configurierten port (8081) zu lesen statt vom default-port 8080 <br/>und bekommt einen 404 vom vlc-server auf port 8081 | # die dm800 versuchte den stream vom configurierten port (8081) zu lesen statt vom default-port 8080 <br/>und bekommt einen 404 vom vlc-server auf port 8081 | ||
+ | |||
===loesung=== | ===loesung=== | ||
+ | |||
ich habe dann einen quick'n dirty patch fuer den client gemacht.<br/> | ich habe dann einen quick'n dirty patch fuer den client gemacht.<br/> | ||
da der vlc-client keinen expliziten port anfodert wird mein server IMMER 8080 verwenden.<br/> | da der vlc-client keinen expliziten port anfodert wird mein server IMMER 8080 verwenden.<br/> | ||
Zeile 111: | Zeile 145: | ||
'self.getHttpPort()' einfach statisch durch 8080 ersetzt.<br/><br/> | 'self.getHttpPort()' einfach statisch durch 8080 ersetzt.<br/><br/> | ||
− | ===patch VlcServer.py=== | + | |
+ | === patch VlcServer.py Version 2.7cvs20100104-r0 === | ||
+ | |||
<pre> | <pre> | ||
# cd /usr/lib/enigma2/python/Plugins/Extensions/ | # cd /usr/lib/enigma2/python/Plugins/Extensions/ | ||
Zeile 124: | Zeile 160: | ||
+ return "http://%s:8080/%s.ts" % (self.getHost(), streamName) | + return "http://%s:8080/%s.ts" % (self.getHost(), streamName) | ||
+ | def unpause(self): | ||
+ | self.__xmlRequest("status", {"command": "pl_pause"}) | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | === patch VlcServer.py Version 3.1git20110318-r0 === | ||
+ | |||
+ | <pre> | ||
+ | diff -uBr VlcPlayer.orig/VlcServer.py VlcPlayer/VlcServer.py | ||
+ | --- VlcPlayer.orig/VlcServer.py 2012-01-12 18:35:55.000000000 +0100 | ||
+ | +++ VlcPlayer/VlcServer.py 2012-01-12 18:35:53.000000000 +0100 | ||
+ | @@ -257,7 +257,8 @@ | ||
+ | return None | ||
+ | else: | ||
+ | self.lastError = None | ||
+ | - return "http://%s:%d/%s.ts" % (self.getHost(), self.getHttpPort(), streamName) | ||
+ | + #return "http://%s:%d/%s.ts" % (self.getHost(), self.getHttpPort(), streamName) | ||
+ | + return "http://%s:8080/%s.ts" % (self.getHost(), streamName) | ||
+ | |||
def unpause(self): | def unpause(self): | ||
self.__xmlRequest("status", {"command": "pl_pause"}) | self.__xmlRequest("status", {"command": "pl_pause"}) | ||
Zeile 129: | Zeile 184: | ||
# patch auf der dreambox einspielen - see 'man patch' | # patch auf der dreambox einspielen - see 'man patch' | ||
− | # auf der dm800 loechen der .pyc <pre>rm /usr/lib/enigma2/python/Plugins/Extensions/VlcPlayer/VlcServer.pyc</pre> '''sonst wird die veraenderung an der VlcServer.py nicht uebernommen!''' | + | # auf der dm800 loechen der .pyc oder .pyo <pre>rm /usr/lib/enigma2/python/Plugins/Extensions/VlcPlayer/VlcServer.(pyc|pyo)</pre> '''sonst wird die veraenderung an der VlcServer.py nicht uebernommen!''' |
# dm800 rebooten <br/>'''sonst wird die veraenderung an der VlcServer.py nicht uebernommen! WTF??''' | # dm800 rebooten <br/>'''sonst wird die veraenderung an der VlcServer.py nicht uebernommen! WTF??''' | ||
# vlc-server starten, falls noch nicht geschehen:<pre>vlc -I http --http-host vlc.lan.mydomain.de:8081 -vvv</pre> | # vlc-server starten, falls noch nicht geschehen:<pre>vlc -I http --http-host vlc.lan.mydomain.de:8081 -vvv</pre> | ||
Zeile 136: | Zeile 191: | ||
# bier holen | # bier holen | ||
# entspannen!!!! | # entspannen!!!! | ||
+ | |||
==Appendix== | ==Appendix== | ||
+ | |||
===init-script fuer lenny=== | ===init-script fuer lenny=== |
Aktuelle Version vom 12. Januar 2012, 17:56 Uhr
Inhaltsverzeichnis
VlcPlayer plugin
Client Versionen
ich hatte probleme mit meinem vlc-player plugin auf der dm800
uname -a Linux dm800 2.6.12-5.1-brcmstb-dm800 #1 Tue Mar 10 13:19:31 CET 2009 7401c0-nand unknown # ipkg list_installed | grep -i vlc enigma2-plugin-extensions-vlcplayer - 2.7cvs20100104-r0
nach einem update sieht die konfiguration so aus:
Linux dm800 2.6.18-7.4-dm800 #1 Tue Mar 22 18:02:59 UTC 2011 7401c0 GNU/Linux # ipkg list_installed | grep -i vlc enigma2-plugin-extensions-vlcplayer - 3.1git20110318-r0
ein entsprechender patch findet sich weiter unten im text...
Server Versionen
ii vlc 0.8.6-svn20061012.debian-5.1+etch3
nach einem upgrade auf lenny geht das ganze nicht mehr!! :-( dies war aber zum abspielen von HD-videos noetig |
nach dem update:
ii vlc 1.0.3-1+opp~1 multimedia player and streamer ii vlc-nox 1.0.3-1+opp~1 multimedia player and streamer (without X)
wenn man ein lenny benutzt muss man also folgendes repo einbinden:
wget http://debian.oppserver.net/gpg-opp-signing-pubkey.asc -O - | apt-key add -
sources.list:
deb http://debian.oppserver.net/debian/ lenny main non-free contrib deb-src http://debian.oppserver.net/debian/ lenny main non-free contrib
Opp hat sein paket auf version 1.1.4-1+opp~1 geupdated - hiermit laeuft (bei mir) das streaming zur dreambox nicht mehr!!! Nach einem downgrade auf die alte version 1.0.x war alles gut... ;-) |
aus diesem grund bitte folgende datei editieren:
vi /etc/apt/preferences
und folgendes dort eintragen:
Package: vlc Pin: version 1.0.3-1+opp~1 Pin-Priority: 999 Package: vlc-nox Pin: version 1.0.3-1+opp~1 Pin-Priority: 999
wer die version 1.0.3-1+opp~1 nicht oder nicht mehr hat, kann sie hier bekommen:
http://deb.rubbish.de/debian/pool/main/v/vlc/vlc_1.0.3-1+opp~1_i386.deb http://deb.rubbish.de/debian/pool/main/v/vlc/vlc-nox_1.0.3-1+opp~1_i386.deb
nun ein:
apt-get update ...
apt-get dist-upgrade
nun habe ich auf dem server:
ii vlc 1.0.3-1+opp~1
und alles ist gut und er spielt zumindest .mkv-files
configuration dm800
- Name des Servers: vlc.lan.mydomain.de
- Server-Adresse: vlc.lan.mydomain.de
- Server-Port: 8080
configuration server
Starten des vlc-binary mit folgenden parametern:
vlc -I http --http-host vlc.lan.mydomain.de:8080 -vvv
problem 1
- das plugin kann zum server connecten.
- ich kann durch die verzeichnis-struktur browsen
- ich kann filme zum abspielen auswaehlen
- abspielen von streams zeigt die dm800 ein schwarzes bild zeigt.
- der timer laeuft, ich kann augenscheinlich spulen, etc. aber der bildschirm bleibt schwarz.
nach etwas debugen habe ich dann rausgefunden dass der vlc-server beim starten eines streams
einen fork() macht und versucht, soweit nichts explizit angefordert wird,
default den port 8080 zu verwenden. dies fuehrte bei mir zu einem:
[...] Could not bind port. Allready in use. [...]
was ja auch logisch ist, da unser vlc-webinterface des servers ja bereits auf 8080 lauscht.
ich aendere also meine configuration folgendermassen:
configuration dm800
- Name des Servers: vlc.lan.mydomain.de
- Server-Adresse: vlc.lan.mydomain.de
- Server-Port: 8081
configuration server
Starten des vlc-binary mit folgenden parametern:
vlc -I http --http-host vlc.lan.mydomain.de:8081 -vvv
problem 2
- das plugin kann zum server connecten.
- ich kann durch die verzeichnis-struktur browsen
- ich kann filme zum abspielen auswaehlen
- der server kann fork()-en und port 8080 binden!!!
- der stream laeuft und ich kann ihn mit einem vlc-player auf einem 3. rechner ansehen.
- die dm800 zeigt nach wie vor ein schwarzes bild!
- der timer laeuft, ich kann augenscheinlich spulen, etc. aber der bildschirm bleibt schwarz. sagte ich das schon? ;-)
folglich:
- die dm800 versuchte den stream vom configurierten port (8081) zu lesen statt vom default-port 8080
und bekommt einen 404 vom vlc-server auf port 8081
loesung
ich habe dann einen quick'n dirty patch fuer den client gemacht.
da der vlc-client keinen expliziten port anfodert wird mein server IMMER 8080 verwenden.
daher habe ich an der stelle wo der serverstream geoeffnet werden soll
'self.getHttpPort()' einfach statisch durch 8080 ersetzt.
patch VlcServer.py Version 2.7cvs20100104-r0
# cd /usr/lib/enigma2/python/Plugins/Extensions/ # diff -uBr VlcPlayer.orig/VlcServer.py VlcPlayer/VlcServer.py --- VlcPlayer.orig/VlcServer.py 2010-03-06 12:42:48.000000000 +0100 +++ VlcPlayer/VlcServer.py 2010-03-06 13:23:20.000000000 +0100 @@ -254,7 +254,7 @@ return None else: self.lastError = None - return "http://%s:%d/%s.ts" % (self.getHost(), self.getHttpPort(), streamName) + return "http://%s:8080/%s.ts" % (self.getHost(), streamName) def unpause(self): self.__xmlRequest("status", {"command": "pl_pause"})
patch VlcServer.py Version 3.1git20110318-r0
diff -uBr VlcPlayer.orig/VlcServer.py VlcPlayer/VlcServer.py --- VlcPlayer.orig/VlcServer.py 2012-01-12 18:35:55.000000000 +0100 +++ VlcPlayer/VlcServer.py 2012-01-12 18:35:53.000000000 +0100 @@ -257,7 +257,8 @@ return None else: self.lastError = None - return "http://%s:%d/%s.ts" % (self.getHost(), self.getHttpPort(), streamName) + #return "http://%s:%d/%s.ts" % (self.getHost(), self.getHttpPort(), streamName) + return "http://%s:8080/%s.ts" % (self.getHost(), streamName) def unpause(self): self.__xmlRequest("status", {"command": "pl_pause"})
- patch auf der dreambox einspielen - see 'man patch'
- auf der dm800 loechen der .pyc oder .pyo
rm /usr/lib/enigma2/python/Plugins/Extensions/VlcPlayer/VlcServer.(pyc|pyo)
sonst wird die veraenderung an der VlcServer.py nicht uebernommen! - dm800 rebooten
sonst wird die veraenderung an der VlcServer.py nicht uebernommen! WTF?? - vlc-server starten, falls noch nicht geschehen:
vlc -I http --http-host vlc.lan.mydomain.de:8081 -vvv
- vlc-server auf der dm800 auf port 8081 configurieren
- film auswaehlen
- bier holen
- entspannen!!!!
Appendix
init-script fuer lenny
#! /bin/sh ### BEGIN INIT INFO # Provides: VLCStream # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start vlc as streaming server # Description: Starts vlc as streaming server for dream dm800 ### END INIT INFO # Author: Christoph Steidl <chris@rubbish.de> # Do NOT "set -e" #set -x # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="VLC Streaming Service" NAME=vlc # using sudo as daemon since vlc-1.0.x # giving vlc-binary as daemon-args DAEMON=/usr/bin/sudo DAEMON_ARGS="-u $NAME /usr/bin/$NAME -vvv -I http --http-host vlc.lan.mydomain.de:8081" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/vlcstreamd # unset DISPLAY - we have no X and will run vlc as server unset DISPLAY # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # verbose =YES VERBOSE=yes # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --background --make-pidfile \ --user vlc --group vlc --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS [ -n "`/bin/pidof $NAME`" ] && return 0 || return 2 } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME if [ $? -eq 0 ]; then rm $PIDFILE; return 0 else return 2 fi } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # #start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME log_daemon_msg "Reload of $DESC not possible" log_daemon_msg "Please stop and start the service" log_end_msg 1 return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" do_reload log_end_msg $? ;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop if [ `pidof $NAME` ]; then log_end_msg 1; exit 1; fi case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac :