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"