Videoformat on the fly umwandeln ?

  • Hi,


    ich habe VDR installiert bekommen und kann auch Programme sehen. Nun habe ich aber so ein
    kleines Gerät (OpenMoko FreeRunner), dass zu wenig CPU Power hat, um mit mplayer den Stream
    zu transformieren.


    Es gibt eine kleine Anleitung, wie mit mencoder umzugehen ist, um etwas brauchbares auf dem
    FR abspielen zu können:


    mencoder video-file -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=300
    -vf scale=320:240,eq2=1.2:0.5:-.025,rotate=2 -oac mp3lame -lameopts
    br=64:cbr -o video-file-FR.avi


    Kann das nicht irgendwie auf meinem Server geschehen und gestreamt werden ?


    Ich habe einen mplayer Plugin gesehen, aber nur in Quellform. Um das mal schnell zu testen,
    suche ich aber ein RPM Packet for openSuSE 11.1.


    http://wiki.openmoko.org/wiki/Video_Player


    Danke


    Lothar

  • Du suchst streamdev-server und externremux.sh. Beides im VDR-Wiki beschrieben. Damit lässt sich Dein Problem lösen.


    cu
    Markus

  • Hmm,


    ich finde streamdev welche einen Client und einen Server enthält. Meist Du den ?


    Auf der Pluginpage dazu finde ich nur Links zum CVS Server.


    Wo genau gibts denn dazu ne Doku. Ich habe ja den streamdev schon eingerichtet.
    Aber eben nicht mit der passenden Auflösung :)


    Danke


    Lothar

  • Einfach die SuFU benutzen....
    Ist hier im Portal alles beschrieben und gibt sogar einen Extra Thread von externremux.sh


    Was meinst du mit passender auflösung ??
    Dazu ist die externremux da
    sprich http://ipdesvdr:3000/EXTERN/Kanal ... wenn ich mich nicht irre


    1.VDR: Stabile Version ab Dez.2008-2013: EasyVDR 0.8.6
    1 DVB-S Technotrend Premium S2300 /Intel Pentium 2,4 GHz / VG33/ Samsung 160 GB /512 DDR

    1.Client-VDR Motorola VIP1710
    2.Client-Test VDR Raspberry Pi mit Openelec

  • Zitat

    Original von lollisoft
    Naja, ich bekomme viele Ergebnisse, wenn ich hier nach externremux.sh suche.


    Ich wühle mich da mal durch, aber bedanke mich, wenn mir jemand den Thread
    hier verlinken würde :-)r


    Steht auch im Wiki beschrieben, dort findet sichs wohl schneller ;)


    cu
    Markus

  • :schiel "externremux.sh" im Suchfeld eingeben, Enter drücken, feddisch.

  • So,


    nun scheint es eingerichtet zu sein, aber ich bekomme Fehlermeldungen im Log:


    Jan 21 15:54:27 vmhost vdr: [9862] ERROR: write failed: Datenübergabe unterbrochen (broken pipe)
    Jan 21 15:54:27 vmhost vdr: [9862] caught signal 13
    Jan 21 15:54:27 vmhost vdr: [9862] ERROR: write failed: Datenübergabe unterbrochen (broken pipe)
    Jan 21 15:54:27 vmhost vdr: [9862] caught signal 13
    Jan 21 15:54:27 vmhost vdr: [9862] ERROR: write failed: Datenübergabe unterbrochen (broken pipe)
    Jan 21 15:54:27 vmhost vdr: [9852] client (HTTP) 192.168.150.18:51232 has closed connection
    Jan 21 15:54:27 vmhost vdr: [9852] streamdev: closing streamdev connection to 192.168.150.18:51232
    Jan 21 15:54:27 vmhost vdr: [9862] streamdev-livestreaming thread ended (pid=9846, tid=9862)
    Jan 21 15:54:27 vmhost vdr: [9861] streamdev-writer thread ended (pid=9846, tid=9861)
    Jan 21 15:54:27 vmhost vdr: [9852] buffer stats: 68432 (1%) used
    Jan 21 15:54:27 vmhost vdr: [9864] TS buffer on device 1 thread ended (pid=9846, tid=9864)
    Jan 21 15:54:27 vmhost vdr: [9863] buffer stats: 68056 (3%) used
    Jan 21 15:54:27 vmhost vdr: [9863] receiver on device 1 thread ended (pid=9846, tid=9863)


    Das hier ist nochmal via grep gefiltert:


    Jan 21 15:53:47 vmhost vdr: [9846] timer 1 (6 2305-0105 'Face - Abgerechnet wird zum Schluss') set to event Mit 21.01.2009 23:15-00:55 (VPS: 21.01 23:13) 'Face - Abgerechnet wird zum Schluss'
    Jan 21 15:53:47 vmhost vdr: [9846] timer 2 (6 0045-0300 'Copykill') set to event Don 22.01.2009 00:55-02:50 (VPS: 22.01 00:55) 'Copykill'
    Jan 21 15:53:58 vmhost vdr: [9852] Streamdev: Accepted new client (HTTP) 192.168.150.18:51232
    Jan 21 15:53:58 vmhost vdr: [9860] streamdev-server: EOF reading from externremux
    Jan 21 15:53:58 vmhost vdr: [9861] streamdev-writer thread started (pid=9846, tid=9861)
    Jan 21 15:53:58 vmhost vdr: [9862] streamdev-livestreaming thread started (pid=9846, tid=9862)
    Jan 21 15:53:58 vmhost vdr: [9863] receiver on device 1 thread started (pid=9846, tid=9863)
    Jan 21 15:53:58 vmhost vdr: [9864] TS buffer on device 1 thread started (pid=9846, tid=9864)
    Jan 21 15:54:27 vmhost vdr: [9852] client (HTTP) 192.168.150.18:51232 has closed connection
    Jan 21 15:54:27 vmhost vdr: [9852] streamdev: closing streamdev connection to 192.168.150.18:51232
    Jan 21 15:54:27 vmhost vdr: [9862] streamdev-livestreaming thread ended (pid=9846, tid=9862)
    Jan 21 15:54:27 vmhost vdr: [9861] streamdev-writer thread ended (pid=9846, tid=9861)
    Jan 21 15:54:27 vmhost vdr: [9852] buffer stats: 68432 (1%) used
    Jan 21 15:54:27 vmhost vdr: [9864] TS buffer on device 1 thread ended (pid=9846, tid=9864)
    Jan 21 15:54:27 vmhost vdr: [9863] buffer stats: 68056 (3%) used
    Jan 21 15:54:27 vmhost vdr: [9863] receiver on device 1 thread ended (pid=9846, tid=9863)
    Jan 21 15:55:31 vmhost vdr: [9851] channel 6 (hr-fernsehen) event Mit 21.01.2009 15:15-16:00 (VPS: 21.01 15:15) 'Bilderbuch' status 4
    vm


    Der Grund, warum es nicht geht, ist wohl der hier:


    Jan 21 15:53:58 vmhost vdr: [9860] streamdev-server: EOF reading from externremux


    Hier meine Konfiguration:


    /etc/sysconfig/vdr:


    VDR_PLUGINS="streamdev-server"
    VDR_PLUGIN_ARGS_streamdev-server="--remux=/usr/bin/externremux.sh"


    Und das Script mit anderem Pfad (TMP):


    #!/bin/sh
    #
    # externremux.sh


    # CONFIG START
    TMP=/home/vdr/video/externremux-${RANDOM:-$$}
    DEFAULT_QUALITY="IPAQ"
    # CONFIG END


    if [ "$1" == "" ];then
    STREAMQUALITY=$DEFAULT_QUALITY
    else
    STREAMQUALITY=$1
    fi


    mkdir -p $TMP
    mkfifo $TMP/out.avi
    (trap "rm -rf $TMP" EXIT HUP INT TERM ABRT; cat $TMP/out.avi) &


    case "$STREAMQUALITY" in
    "DSL1000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=100 \
    -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 160 \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "DSL2000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=128 \
    -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 160 \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "DSL3000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250 \
    -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "DSL3500") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=300 \
    -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "DSL6000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \
    -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "DSL16000") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=500 \
    -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 480 \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "LAN10") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=4096 \
    -oac mp3lame -lameopts preset=standard \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "WLAN11") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=768 \
    -oac mp3lame -lameopts preset=standard -vf scale -zoom -xy 640 \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "WLAN54") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048 \
    -oac mp3lame -lameopts preset=standard \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "IPAQ") exec mencoder -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350 \
    -oac mp3lame -lameopts preset=15:mode=3 -vf scale -zoom -xy 320 \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    "COPY") exec mencoder -of mpeg -ovc copy -oac copy -mpegopts format=mpeg \
    -o $TMP/out.avi -- - &>$TMP/out.log ;;
    *) touch $TMP/out.avi ;;
    esac

  • /usr/bin/externremux.sh kann/darf ausgeführt werden? Was sagt derhändische Aufruf, evtl. ist ein " zu viel oder zu wenig...


    cu
    Markus

  • Also das Ding ist ausführbar (chmod +x, chown vdr.root) und liegt z.Z. in /home/vdr.


    vmhost:/home # ls -l
    total 28
    drwx------ 2 root root 16384 Jan 1 20:16 lost+found
    drwxr-xr-x 34 lothar users 4096 Jan 21 12:49 lothar
    drwxr-xr-x 8 qemu users 4096 Jan 20 22:10 qemu
    drwxr-xr-x 3 vdr root 4096 Jan 21 16:13 vdr
    vmhost:/home # ls -l vdr
    total 8
    -rwxr-xr-x 1 vdr root 14 Jan 21 16:10 externremux.sh
    drwxr-xr-x 12 vdr root 4096 Jan 21 16:13 video
    vmhost:/home #


    Weiter ist da momentan nur ein cat drin, was bei manuellem Ausführen natürlich in Wartestellung geht.
    Beim Restart von vdr erhalte ich aber immer die gleiche Meldung:


    vmhost:/home # /etc/init.d/vdr restart
    /etc/sysconfig/vdr: line 13: VDR_PLUGIN_ARGS_streamdev-server=--remux=/home/vdr/externremux.sh: No such file or directory
    /etc/sysconfig/vdr: line 13: VDR_PLUGIN_ARGS_streamdev-server=--remux=/home/vdr/externremux.sh: No such file or directory
    Shutting down Video Disk Recorder done
    /etc/sysconfig/vdr: line 13: VDR_PLUGIN_ARGS_streamdev-server=--remux=/home/vdr/externremux.sh: No such file or directory
    Starting Video Disk Recorder done


    Keine Ahnung was das jetzt noch sein kann. Kann ich irgendwie strace einsetzen ?

  • Sicher, dass das mit den Plugin-Argumenten so tut? Die Zeile sieht merkwürdig aus...
    Welches System nutzt Du überhaupt?


    cu
    Markus

  • Hehe, nun habe ich das hinbekommen.


    1. Fehler: Es liegt offensichtlich am Parsing der Plugin Parameter. Ein Umbenennen des Plugins (ohne - ) half auch das gemeckere über das nicht vorhandene Script abzustellen.


    2. Fehler: Der /tmp Pfad geht nicht unter openSuSE. Habe in in /home/vdr/tmp verlegt.


    Nun habe ich zumindest ein wenig Video in klein. Mal sehen wie's auf meinem FR ausschaut :)


    Gruß


    Lothar

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!