MPEG/DivX/Xvid/WMA/MP3/etc: Encoder/Player für Dreambox, getestet auf 7020/500

  • Hallo,


    (Hinweis: dieser post wurde seit 22.09. mehrfach aktualisiert, WMA2MP3 ist im unteren Teil dieses posts erklärt)


    für mein Dream Motion Projekt benötige ich einen flexiblen MPEG Encoder, der die gängigen Codes unterstützt und direkt auf der Drembox läuft. Aus diesem Grund habe ich mich mit dem MENCODER beschäftigt und konnte ihn erfolgreich x-kompilieren. Getestet habe ich ihn auf der DM7020 mit GEMINI 3.0. Andere Dreamboxen-Typen habe ich leider nicht im Zugriff.


    EDIT:
    Ganz unten im Thread (nicht in diesem Post) sind die aktuellen Binaries angehängt mit dem tag "new_ 1.0....gz".


    2006.10.22, Sunday :: MPlayer 1.0rc1 released
    The highlights of this release are native VC-1/WMV3, On2 VP5 and VP62 (used in some Flash video files) decoding, which works even on non-Intel platforms, and SSA/ASS/color subtitles.
    Vorbis decoding has seen a big speedup, as has H.264. The optimizations to H.264 are still ongoing, but the difference should already be noticeable.
    /EDIT


    ==================================
    M E N C O D E R


    Der MENCODER ist Teil des MPLAYER packages(Quelle: mplayerhq) und ist unter GNU General Public License v2 lizensiert. Das lauffähige MENCODER binary ist unten zum Download angehängt.


    Der MENCODER beherrscht alle gängigen Codes (MPEG4, 2, 1, Xvid, usw). Diese sind alle 'built-in', d.h. es wird nur ein binary benötigt, welches in der Linux shell ausgeführt wird.


    Er kann z.B. DivX-MPEG4 Videos nach MPEG2 konvertieren. Vice versa geht natuerlich auch. Die Dreambox ist natuerlich viel zu langsam für "encoding-on-the-fly", auch ist MENCODER kein Plugin! Mein Anwendungsfall ist ein anderer:


    Ich baue aus den Einzelbildern meiner IP-CAM einen MPEG1 Video File (kann von Enigma abgespielt werden!):


    MPEG1 (abspielbar mit Enigma!):
    mencoder mf://*.jpg -mf w=640:h=480:fps=5:type=jpg -ovc lavc -lavcopts vcodec=mpeg1video -vf scale=640:480 -of mpeg -o output.mpg


    Da die IP-CAM jpgs sehr klein sind (640x480, 15 kb) und es nur ein paar wenige sind (meist so um die 10..15 pro Dream Motion Alarmmeldung), fällt die schwache Rechenleistung der Dreambox nicht sehr ins Gewicht.


    MPEG4 ginge so:
    mencoder mf://*.jpg -mf w=640:h=480:fps=5:type=jpg -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -of mpeg -o output.mpg


    Inwiefern in weitere Formate konvertiert werden kann, konnte ich noch nicht testen.


    Über Feedback würde ich mich freuen.
    MENCODER benötigt die libjeg.so.6. Die ist im tgz-File enthalten und kann z.B. nach /lib kopiert werden.


    Für User mit älteren Images kommt MENCODER_static in Frage. Chriwi hat es auf der DM500 getestet. Funktioniert. Sollte auch auf anderen Boxen tun.


    ===========================================
    M P L A Y E R


    Der MPLAYER kann als Decoder verwendet werden, daher hier ein kurzer Exkurs zum Thema WMA nach MP3 Konvertierung. Es wurden bisher keine weiteren Features getestet. Wer also hofft, daß MPLAYER DivX (o.ä.) auf dem TV Display abspielt, muß enttäuscht werden!


    WMA2MP3 - Was wird gebraucht?
    MPLAYER (wmv decoder, Quelle: http://www.mplayerhq.hu)
    LAME (mp3encoder, Quelle: http://lame.sourceforge.net)
    Hinweis: wer sich fragt, warum hier nicht MENCODER zum Einsatz kommt: er enkodiert nur AV streams, d.h. "audio only" macht er nicht.


    Beide binaries haengen unten an (zur Sicherheit mit '-static' kompiliert).


    Hier ein Beispiel, wie beide Programme miteinander kombiniert werden können:


    1. MPLAYER decodiert den WMA file nach WAV:
    ./mplayer input.wma -ao pcm:file=output.wav


    2. LAME codiert WAV nach MP3
    ./lame output.wav


    Ergebnis: output.mp3


    Um beide Programme zu vernetzen ist eine sog. "named pipe" notwendig. Eine pipe ist eine Art Kommunikationskanal für Programme. Sie ist hier notwendig, weil MPLAYER seinen output nicht nach stdout kopieren kann und hat sonst keinen Nachteil.


    Man kann sie anlegen mit:
    mkfifo pipe1


    Ergo:
    ./mplayer input.wma -ao pcm:file=pipe1 -really-quiet | ./lame pipe1


    Ergebnis auch hier: pipe1.mp3


    Hier der Screenlog eines Beispiels:


    ./mplayer input.wma -ao pcm:file=pipe1 -really-quiet | ./lame -f --preset cbr 16 pipe1
    LAME 3.97 32bits
    Resampling: input 44.1 kHz output 8 kHz
    Using polyphase lowpass filter, transition band: 3645 Hz - 3742 Hz
    Encoding pipe1 to pipe1.mp3
    Encoding as 8 kHz 16 kbps j-stereo MPEG-2.5 Layer III (16x) qval=7


    ____Frame_______|CPU time/estim|REAL time/estim|play/CPU|__ETA
    1826/169084 ( 1%)|20:15/31:15:51|30:51/47:36:55|0.1082x|47:06:04


    ReplayGain: -6.6dB


    Und zur Info ein log, der die Verteilung der CPU Zeit zeigt ('top'):


    PID_USER__STATUS__ RSS__PPID_%CPU_%MEM_COMMAND
    5801_root____ R_____2392__5661_62.8__3.8____lame
    5800_root_____S____2052__5661_25.6__3.3____mplayer
    (...)


    Fazit: Konvertierung konnte demonstriert werden. Allerdings gilt auch hier, daß die Dreambox mit diesen 'mächtigen' Tools aus der PC-Linux-Welt für "on-the-fly" Konvertieren zu langsam ist. Wenn man ein brauchbares Ergebnis erzielen will, dann sollte die mp3-bitrate >= 128kbit sein. Die Dreambox braucht dafür ca. 30x mehr Zeit als "real time". D.h. ein MP3 dauert dann mal schnell 30x t(Songlänge), also mal locker 1,5h.



    Gruß Mamba
    ________________________________________
    Unterstütze Formate, Video: siehe Anhang "format1.jpg"

  • Hallo Bad Boy,


    so direkt geht das vermutlich leider nicht, denn auch mit diesem Tool reicht die Rechenleistung der Prozessoren der Dreamboxen nicht aus die nicht-MPEG-Files in Echtzeit in Dreamboxconformes MPEG2 zu wandel. Mit etwas Geduld wäre es aber damit möglich solche Files auf der Dreambox vorher zu konvertieren und dann wenn sie fertig sind als MPEG2 abzuscpielen, zwar nicht so toll aber im Notfall auch nicht zu verachten. :)
    Ausserdem müsste es auf diese Weise auch möglich sein der DM500 endlich das Darstellen von Fotos beizubringen.

    tschüs


    chriwi


    Admin von http://www.kathi-forum.de


    KathreinUFS922 & UFS910
    DM500; Gemini4.31


    NSLU2
    Fritzbox7170


    1. : Hotbird 9E & 13E, Astra-19.2E & 23.5E & 28.2E
    2. : Rotor (43W-42E)



    x
    [Blockierte Grafik: http://www.embedded-uptime-project.com/bild_12_0.jpg]


    Mich interssiert nicht wozu etwas gedacht war, sonder was irgendwie damit möglich ist.


    Gemini & UFS910-SVN & Unslung & Freetz & Ubuntu8.04 & Nimbuzz :)

    Einmal editiert, zuletzt von chriwi ()

    • Offizieller Beitrag
    Zitat

    Original von ² Bad °° Boy ²
    versteh ich das richtig, das das eine ard plug in ist? das es mir ermöglicht die nicht *.mpg daten von der dream hdd aus zu schauen?


    oder muss mann immer noch steamen?


    MfG
    Baddy


    Es ermöglicht dir, wenn du ein Plugin drum herum baust oder das ganze skriptest oder von der Kommandozeile aus machst (Telnet), nicht MPG Videos nach MPG zu konvertieren (encodieren). Da die Rechenleistung der Dream aber hierfür nicht gerade geeignet ist (fehlende Fliesskommaarithmetik, etc.) bist du da von Realtime weit weg und einen Film umzucodieren dauert das mehrfache seiner eigentlichen Laufzeit ... also nix mit einfach DIVX anschauen. Dafür reichte die Rechenleistung der Dream nie und wird auch nie reichen :winking_face:


    Aber man kann schöne Dinge damit machen, wie z.B. Stillframes (mvi für Hintergrundbilder) encodieren und so. Im Gemini steckt übrigens seit längerer Zeit ein MPEG1-Encoder mit drin, der ist allerdings auf Einzelbilder beschränkt und ist für die MVI Erstellung im BluePanel verantwortlich.

    Nur wer erwachsen wird und ein Kind bleibt, ist ein Mensch.
    Erich Kästner


    8000HD-PVR | 800HD-PVR | 500HD | 7025+SS | 7025SS | 7020S | 7000S | 600-PVR | 500+S | 500S | 5620S | 100S
    Astra 19,2° Ost | Hotbird 13° Ost | Sky (komplett)


    seddi@i-have-a-dreambox.com

  • ok, vielen lieben dank für die antworten!


    also kann ich davon ausgehen, das die dream es niemals schaffen wird z.b. divx daten oder ähnliches von sich aus abzuspielen? also inerne hdd.


    schade an sich, aber ok....


    aber mal so am rande, nur damit ich das wirklich verstehe...


    kan man sagen das jeder 0815 dvd player der auch divx und co. kann besser bestückt ist als ein 700 € sat reciver?

  • >>kan man sagen das jeder 0815 dvd player der auch divx und co.
    >>kann besser bestückt ist als ein 700 € sat reciver?


    Ja bzgl. DivX schon, weil der DVD Player einen H/W decoder chip eingebaut hat. Lizenzgebühren inklusive. Die Dream (wie alle anderen auch?) hat das nicht.


    Und weil die DVD Player so billig sind, kann man sich ja einen zulegen.


    Auf dem kann man sich nat. nicht einloggen, Mails lesen, Wetter anschauen, Webcams scannen, etc.


    So hat jedes Gerät seine Stärken.


    Mal sehen was die Zukunft noch so bringt. Aber S/W de-/encoding in Echtzeit wird die Dream nie koennen. Damit haben ordentliche PCs Probleme und die klotzen nur so mit Ihren Ghz (und Stromrechnungen).


    Gruß Mamba

    checking for long long... yes
    checking for long double... yes
    +++ Divide By Cucumber Error. Stopping. +++

    2 Mal editiert, zuletzt von mamba0815 ()

  • und ich versteh noch immer ned wieso ein benzin betriebenes auto ned diesel tanken kann - ist ja schliesslich und endlich auch um einiges billiger...


    ist wohl der treffenste aller vergleiche....

    DreamBox 1: 7000s rev. 4 . . . . . . . . . . . . . . . Dreambox 2: 7025-SS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dreambox 3: 600 PVR-S . . . . . . . . . Dreambox 4: DM800S HD PVR
    USB - Stick: Kingston Datatraveler USB 2.0 . . CF - Karte: 1GB Extrememory Performance w/o MB!
    Festplatte: IBM 120GB . . . . . . . . . . . . . . . . . . Festplatte: Maxtor 200GB. . . . . . . . . . . . . . . . . . . . . . . . . . . Festpaltte: Samsung 120GB. . . . . . . Festplatte: HDDrive2go 500GB eSata
    Image im Flash: Gemini 4.X0 . . . . . . . . . . . . . Image im Flash: Gemini 4.X0. . . . . . . . . . . . . . . . . . . . . . . . . Image im Flash: Gemini 4.X0. . . . . . Image im Flash: Gemini 5.X0
    Satelliten: 13,0°; 19,2°; 23,5° Ost. . . . . . . . . . Satelliten: NIM1 -19,2° Ost; NIM2 - 13,0°; 19,2°; 23,5° Ost . . Satelliten: 13,0°; 19,2°; 23,5° Ost . . Satelliten: 13,0°; 19,2°; 23,5° Ost


    ...Never cared for what they say - Never cared for games they play - Never cared for what they do - Never cared for what they know...


    ICH GEBE WEDER IM FORUM NOCH PER PM HILFE ZU KEYS BZW. PAYTV HACKS!

  • Hallo Mamba0815,


    > Und weil die DVD Player so billig sind, kann man sich ja einen zulegen.


    Nur gibt es DVD-Player mit Netzwerkanschluss fast garnicht und wenn dann sind sie auch nicht so billig und das man jeden DIVx-Film oder MPEG4-Video extra auf ne Plastikscheibe brennen muss um ihn anzusehen ist halt auch nicht so toll.
    Deshalb wäre ein Linuxbasierter DVD-Player mit Netzwerk und DIVX-(oder Multidecoder)Chip die Beste Lösung, aber die kosten halt noch mal genausoviel wie ne DM7000 und beides ist vielen dann halt zu teuer.


    SadButTrue


    Vielleicht gibt es halt noch gar keine Dieselautos, Höchstens Traktoren. :winking_face:

  • Eben ... die eierlegende Wollmilchsau gibt es halt noch nicht. Aber deswegen ja mein Kommentar: "Mal sehen was die Zukunft noch so bringt." Und SadButTrue hat natürlich recht. Noch gibt es halt keinen Diesel2Benzin bzw. Benzin2Diesel "on-the-fly" Reaktor. :winking_face:


    So nun wieder zurück zum Thema:


    MENCODER. Bin an Erfahrungsberichten interessiert.


    Gruß Mamba

    checking for long long... yes
    checking for long double... yes
    +++ Divide By Cucumber Error. Stopping. +++

    Einmal editiert, zuletzt von mamba0815 ()

  • Code
    ./mencoder: /lib/libpthread.so.0: version `GLIBC_2.3.4' not found (required by ./mencoder)


    @ mamba0815:


    zum rumbasteln hätte ich schon Lust mit dem mplayer ein wenig zu spielen, vielleicht kannst du dich ja erweichen, ihn noch dran zu hängen.


    CU Ulli01

  • Hi, habe den MPLAYER oben angehängt. Bitte lade ihn dir runter. Ich lösche ihn dann später wieder (Update 15:16 Uhr: mplayer gelöscht!). Kann mir, wie gesagt, grad nicht vorstellen wie der auf der Dream laufen soll.


    Gruß Mamba
    -------------------------------------------------------
    root@dm7020:/media/hdd/motion/mencoder/MPdreambox# ./mplayer
    MPlayer 1.0pre8-3.4.4 (C) 2000-2006 MPlayer Team
    CPU: PowerPC
    Creating config file: /home/root/.mplayer/config


    Usage: mplayer [options] [url|path/]filename


    Basic options: (complete list in the man page)
    -vo <drv> select video output driver ('-vo help' for a list)
    -ao <drv> select audio output driver ('-ao help' for a list)
    -ss <position> seek to given (seconds or hh:mm:ss) position
    -nosound do not play sound
    -fs fullscreen playback (or -vm, -zoom, details in the man page)
    -x <x> -y <y> set display resolution (for use with -vm or -zoom)
    -sub <file> specify subtitle file to use (also see -subfps, -subdelay)
    -playlist <file> specify playlist file
    -vid x -aid y select video (x) and audio (y) stream to play
    -fps x -srate y change video (x fps) and audio (y Hz) rate
    -pp <quality> enable postprocessing filter (details in the man page)
    -framedrop enable frame dropping (for slow machines)


    Basic keys: (complete list in the man page, also check input.conf)
    <- or -> seek backward/forward 10 seconds
    down or up seek backward/forward 1 minute
    pgdown or pgup seek backward/forward 10 minutes
    < or > step backward/forward in playlist
    p or SPACE pause movie (press any key to continue)
    q or ESC stop playing and quit program
    + or - adjust audio delay by +/- 0.1 second
    o cycle OSD mode: none / seekbar / seekbar + timer
    * or / increase or decrease PCM volume
    x or z adjust subtitle delay by +/- 0.1 second
    r or t adjust subtitle position up/down, also see -vf expand


    * * * SEE THE MAN PAGE FOR DETAILS, FURTHER (ADVANCED) OPTIONS AND KEYS * * *


    root@dm7020:/media/hdd/motion/mencoder/MPdreambox#

    checking for long long... yes
    checking for long double... yes
    +++ Divide By Cucumber Error. Stopping. +++

    Einmal editiert, zuletzt von mamba0815 ()


  • Den mplayer habe ich geladen, thx... :)


    Cu Ulli01

  • Hallo Mamba0815,


    schade, ich hab gerade mal versucht den mencoder auf meiner DM500 zu starten bekomme aber eine Fehlermeldung wegen der libc.so.6 version GLIBC_2.3.4, ich hab zwar ne libc.so.6 aber scheinbar nicht die richtige Version, das selbe Problem hatte ich mit dem midnightcommander (auch die lic.so.6 versin GLIBC_2.3.4) das konnte ich auch nicht loesen, bis ich ne mc-binary gefunden habe die ohne diese spezielle Version ausgekommen ist.


    Weis hier jemand Hilfe?

  • Welches Gemini hast du auf deiner Box?

    checking for long long... yes
    checking for long double... yes
    +++ Divide By Cucumber Error. Stopping. +++

  • Hallo Mamba0815,


    > Welches Gemini


    3.1MaqxVar500

  • Hi,


    ich habe die Version libc Version 2.3.90. Habe sie dir unten mal angehängt. Ich vermute aber, daß du dir dein Image zerschiesst, wenn du deine mit dieser ersetzt, daher rate ich zur ÄUSSERSTEN Vorsicht, da fast alle shell commands auf diese lib zugreifen. D.h. später wieder zurück-moven geht nicht.


    Gruß Mamba


    root@dm7020:/media/hdd/bin# /lib/libc.so.6
    GNU C Library development release version 2.3.90, by Roland McGrath et al.
    Copyright (C) 2005 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.
    There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
    PARTICULAR PURPOSE.
    Compiled by GNU CC version 3.4.4.
    Compiled on a Linux 2.6.12 system on 2006-05-20.
    Available extensions:
    GNU libio by Per Bothner
    crypt add-on version 2.1 by Michael Glad and others
    Native POSIX Threads Library by Ulrich Drepper et al
    BIND-8.2.3-T5B
    NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
    software FPU emulation by Richard Henderson, Jakub Jelinek and others
    Thread-local storage support included.
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/libc/bugs.html>.
    root@dm7020:/media/hdd/bin#

  • Hallo Mamba0815,


    Danke das mit dem einbinden der libc.so.6 funktioniert soweit, weil ich sie ja eh nicht nach /var/lib schreiben kann sondern nur nach /hdd/dream/lib und dann in einem Startscript fuer mencoder den entsprechenden librarypath exportiere.
    Nur fuert das zur naechsten Inkompatiblitaet, jetzt krieg ich die Fehlermeldung:
    "relocation error: /hdd/dream/lib/libc.so.6: symbol _rtld_global_ro, version GLIBC_PRIVATE not defined in file ld.so.1 with link time reference"


    Was nun?

  • Hi chriwi,


    ichsetz gerade den tftp server auf ...


    Meinst Du wirklich dass das Sinn macht wenn Du versuchst die libs nachzuziehen?


    Ich bin mir jetzt nicht sicher welcher Kernel auf der Dream läuft - ich glaube aber, das war was mit 2.6.9 ....


    Da hat sich in den Kernel-Strukturen zwischen der 2.6.8 und der 2.6.12 verdammt viel getan ... ich glaub nicht, dass das gut geht ...


    Eher würde ich überlegen, das irgendwie mit dem Crosscompiler aus einer älteren Version zu erzeugen oder das Paket aus z.B. einer Suse 9.1 zu nehmen (die ist Kernel mässig etwa 2.6.8 oder so ...).


    ciao und liebe Grüsse aus Süddeutschland,
    archi

  • Hi archimedes,


    im prinzip du hast natuerlich recht. Wenn es mit Nachreichen der libs geht, dann ist es die einfachste Lösung, wobei ich auch meine Sorgen habe. Zumindest die libc hat die DM500 akzepiert. Zum Standard kann das nat. nich werden. :)


    Gruß Mamba

    checking for long long... yes
    checking for long double... yes
    +++ Divide By Cucumber Error. Stopping. +++