Oskar Welzl: Weblog zur Homepage

N900: Video-MMS verschicken mit fMMS

Mit fMMS gibts ein recht brauchbares Programm am N900, das in erster Linie Bilder als MMS verschickt. Natürlich können auch andere Dateien als Anhang ausgewählt werden, fMMS stellt sie nur nicht so hübsch eingebettet dar. Videos per MMS versenden? Kein Problem also. Oder doch? Eben doch. Aber ich hab die Lösung. Liest Du weiter! ;)

Videos müssen, wenn sie per MMS verschickt werden sollen, vor allem eins sein: klein. Genau das sind die hochauflösenden N900-Videos nicht. Außerdem sollte ein MMS-Video in einer bestimmten Codierung verschickt werden, die die zuständigen Normungsgremien als gemeinsamen Standard für alle Telefonhersteller festgelegt haben. Sonst ist es Glückssache, ob der Empfänger den Clip überhaupt angezeigt bekommt.

Nokia hat sich darum nie gekümmert (offiziell hat das N900 ja keine MMS-Funktion), und auch der Programmierer von fMMS hatte andere Prioritäten auf der Netzwerkebene. Oskar for the rescue also. ;)

Tatsächlich hat das Maemo-Betriebssystem nämlich durchaus Funktionen eingebaut, die die Umwandlung jedes beliebigen Videos in eine briefmarkengroße MMS durchführen. Weil diese Funktionen auf dem GStreamer-Framework beruhen, das mittlerweile auf jedem GNU/Linux-System zur Standardausstattung gehört, findet man auch reichlich Dokumentation dazu. Ausgestattet mit diesem Wissen war mir klar, daß die Videokonvertierung ohne jede Software einfach auf der Kommandozeile möglich sein sollte. Die Betonung liegt auf sollte. Es sollte nämlich so aussehen:

$ gst-launch-0.10 \
filesrc location="infile.mp4" ! \
decodebin2 name=all \
hantromp4mux filetype=1 name=muxer ! \
filesink location="outfile.3gp" \
all. ! videoscale ! \
"video/x-raw-yuv, width=176,height=144" ! \
videorate ! \
"video/x-raw-yuv, framerate=15/1" ! \
dsph263enc ! queue ! muxer. \
all. ! audioconvert ! audioresample ! \
nokiaamrnbenc ! queue ! muxer.

Wenn jemand rausfindet, warum diese Pipe nicht funktioniert, darf er sich melden: Sie erzeugt eine Datei ohne Ton und wirft bei der Abarbeitung jede Menge uninterpretierbarer Warnmeldungen aus. Trotzdem würd ich sie gerne so zum Laufen bringen, weil sie in dieser Form ohne Drittsoftware auskommt und die Hardware des N900 am besten ausnutzt, was deutliche Geschwindigkeitsvorteile bringt.

Ich hab mich dann ein bißchen gespielt und bin auf folgende Alternative gestoßen. Zwar ist sie nicht so elegant, hat aber einen entscheidenden Vorteil: Sie funktioniert.

$ gst-launch-0.10 \
filesrc location="infile.mp4" ! decodebin ! \
audioconvert ! audioresample ! \
nokiaamrnbenc band-mode=7 ! \
ffmux_amr ! filesink location=sound.amr

$ gst-launch-0.10 ffmux_3gp name=muxer ! \
filesink location="outfile.3gp" \
filesrc location="sound.amr" ! amrparse ! \
queue ! muxer.audio_00 \
filesrc location="infile.mp4" ! decodebin ! \
videoscale ! \
"video/x-raw-yuv, width=176,height=144" ! \
videorate ! \
"video/x-raw-yuv, framerate=15/1" ! \
ffmpegcolorspace ! \
dsph263enc bitrate=50000 ! \
queue ! muxer.video_00

Hier wird die AMR-Codierung der Tonspur in eine eigene Befehlszeile ausgelagert. Außerdem verwende ich einen anderen Muxer. Damit das funktioniert, muß das Paket gstreamer0.10-ffmpeg installiert sein. Dieses Paket scheint nicht direkt im Programm-Manager auf, sondern wird durch Extra Decoders Support bereitgestellt.

Die zwei Zeilen in ein Script verpackt, der Name des Originalvideos als Parameter - und schon ist der „Video-Editor“ fertig. Ich hab meine ersten MMS-Videos schon verschickt, überraschenderweise konnten die Empfänger die Videos wirklich sehen.

Mein Wunsch: Eine Lösung auf Basis der ursprünglichen Idee, ohne gstreamer0.10-ffmpeg, die man dann auch fix in fMMS einbauen kann. Wie ich mich kenn, bleibts beim Wunsch: Jetzt, wo's so halbwegs funktioniert und ich es verwenden kann, ist der Spieltrieb erlahmt. ;)

 
Weitere Links zu …
N900:
development