film_transcodieren_fuer_mobile_miniplayer

Film transcodieren für mobile Miniplayer

Ich besitze einen entryx EM880RB und kann natürlich auch nur auf diesem Gerät testen. Das Simple-Profil Level 3 schreibt eine Bildwiederholrate von 15 FPS vor, mein Miniplayer kann jedoch 20 FPS darstellen. Aus diesem Grund habe ich natürlich auch optimierte Transcodierkommandos entworfen, die mit etwas stärkerer Optimierung und 20 FPS arbeiten.

MPEG-4 / Simple-Profil

Das Simple-Profil wurde für Miniplayer und Handheld-Geräte entworfen, die ein kleines Display, wenig Speicher und einen schwachen Prozessor haben. Man kann es als den kleinen Kleinen Bruder von ASP (MPEG-4 Part 2) betrachten.

Manche Leute verwenden auch den XMedia Recode unter wine um ihre Filme für ihren MiniPlayer fit zu machen.

MPEG-4 Simple-Profil Level 3

  • Audio: MP2
  • MPEG-4 ASP@Level 3 (XviD)
  • Video: 320x240 Pixel (QVGA) mit 20 Bildern pro Sekunde

Die folgenden Player können Filme nach diesem Profil abspielen:

  1. entryx EM880RB
  2. Creative ZEN (Digital Player 2-32 GB)
  3. iRiver B20
  4. Philips SA5285

MPEG-4 Simple-Profil Level 5

  • Audio: MP3
  • MPEG-4 ASP@Level 5 (XviD, DivX)
  • Video: 720x576 Pixel mit 30 Bildern pro Sekunde

Die Darstellungsqualität entspricht "SDTV" (NTSC und PAL) und so kann dieses Profil praktisch alles anzeigen was kleiner als HDTV ist, somit spielt es eigentlich schon in der ASP-Liga…

Die folgenden Player können Filme nach diesem Profil abspielen:

  1. XORO HSD 415
  2. SanDisk Sansa Fuze+

entryx EM880RB

Die Filme, die mit den hier erwähnten Kommando's für den "entryx EM880RB" generiert werden, sollten unter anderem auch auf den folgenden Playern laufen:

  • Creative ZEN (Digital Player 2-32 GB)
  • iRiver B20
  • Philips SA5285

Es kann sein, dass man bei dem einen oder anderen Player die Bildwiederholrate (-ofps) etwas erhöhen kann (15-30) und den Parameter "-ffourcc" entweder auf DX50 oder DIVX setzen muss, damit sie laufen.

Allgemeine Infos

Mein Mediaplayer entryx EM880RB hat folgende technische Daten.

  1. Wiedergabe von Audio-Dateien im Format
    • MP3: 8-320 kbps
    • WMA (DRM9): 32-384 kbps
  2. Wiedergabe von Video-Dateien
    • Format: AVI (mind. das MPEG4 Simple-Profil Level 3)
    • Video-Codec: Xvid
    • Audio-Codec: MP2
    • Bildwiederholrate: max. 20 Bilder pro Sekunde
    • Auflösung: max. 320x240 Pixel (QVGA)
  3. Sprachaufnahmevorrichtung: WAVE
    • normale Qualität: 32 kbps
    • hohe Qualität: 64 kbps
  4. Bildschirm:
    • Bilddiagonale: 2.4 Zoll (6,1 cm)
    • Display-Technologie: TFT Display
  5. Anzeige von Bildern/Fotos
    • Format: JPEG (bis 5120x3840 Pixel)
  6. FM-Radio
  7. Speicherkartenerweiterung: Micro-SD (bis max. 1GB)
  8. Verzeichnisnavigation
  9. eingebauter Flash-Speicher: 4GB
  10. Integrierte wiederaufladbare Lithium-Ionen-Batterie (wird per USB-Port innerhalb von 3 Stunden aufgeladen)
    • Audiowiedergabe: ~10 Stunden
    • Videowiedergabe: ~4 Stunden
  11. Abmessungen
    • Breite: 91 mm
    • Höhe: 51 mm
    • Dicke: 8 mm
  12. Betriebstemperatur: 0 - +55 °C
  13. Lagertemperatur: -20 - +55 °C

Kurz gesagt, hat das Ding folgende Multi-Media-Funktionen, die für mich von Interesse sind:

Funktion entryx EM880RB Bemerkung
eBook anzeigen Text-Dateien veraltet: PDF ist aktuell
Fotos anzeigen JPG ist in Ordnung, aber weitere Formate wären besser
Audio abspielen MP3 veraltet: AAC/M4A ist aktuell
Audio aufnehmen WAV ist in Ordnung, ist eben das verlustfreie RAW-Format, aber AAC/M4A würde ich auch noch gerne haben
Filme abspielen: Video-Codec Xvid veraltet: H.264 und x264 sind aktuell
Filme abspielen: Audio-Codec MP2 veraltet: AAC ist aktuell
Filme abspielen: Container AVI veraltet: MKV und MP4 sind aktuell
Schwächen

Mir sind folgende Dinge am Player negativ aufgefallen:

  1. die Display-Helligkeit ist recht schwach;
  2. 4GB sind etwas wenig

transcodieren

Die Werkzeuge um sich unter Linux/FreeBSD einen Film so transcodieren zu können, dass er auf diesem Mediaplayer läuft, habe ich hier abgelegt.

Die meisten MiniPlayer spielen nur DivX-Filme ab, dieser jedoch nicht! Der entryx EM880RB kann nur Xvid-Filme im AVI-Container mit MP2-Audiospur abspielen.

Xvid kennt ein paar vordefinierte Profile für Standalone-Geräte (sp0, sp1, sp2, sp3, asp0, asp1, asp2, asp3, asp4, asp5, dxnhandheld, dxnportntsc, dxnportpal, dxnhtntsc, dxnhtpal, dxnhdtv).

Sollte ein Player Xvid nicht unterstützen, dann muss man dieses Kommando noch um die Option -ffourcc DX50 ergänzen, denn dadurch Ändert man die Codec-Bezeichnung im Film (Codec-Label).

Von diesen Profilen haben auf meinem MiniPlayer die beiden Profile sp2 (Simple-Profil Level 2) und sp3 (Simple-Profil Level 3) mit voller Auflösung (320x240 bzw. QVGA) funktioniert, allerdings nur mit verringerter Bildwiederholrate (15FPS), denn diese Profile beherrschen maximal nur 15 FPS. Grundsätzlich unterstützen die Profile sp2 und sp3 Auflösungen bis 352 × 288 (CIF) aber eben nicht jeder MiniPlayer.

Die Profil-Level sp0 und sp1 unterstützen Auflösungen bis 176x144 (QCIF).

Um auf meinem MiniPlayer auch Filme mit 20 FPS abspielen zu können, habe ich ein selbst erstelltes Xvid-Kommando verwendet.

Als sinnvolle Bitraten hat sich die Spanne von 150-300 kbps ergeben. Bei 150kbps sieht man schon deutlich mehr Artefakte und ab ca. 300 kbps konnte ich keine Änderungen auf dem kleinen 2,4 Zoll-Display mehr fest stellen.

Kommandozeile

Diese Kommandozeilen generieren Filme, die auf tragbaren Mediaplayern abgespielt werden können, wenn sie dem Simple-Profil Level 3 entsprechen.

In diesem Fall sind die Optionen innerhalb des Profilspielraumes auf folgende Werte gesetzt:

  1. Video-Codec: Xvid (mein Player versteht kein DivX, will man "DivX 5", dann muss man -ffourcc DX50 in die Kommandozeile mit aufnehmen)
  2. Auflösung: 320x240 (QVGA)
  3. Audio-Codec: MP2
  4. Audio-Bitrate: 128kbps
  5. Sample-Rate: 44100 Hz

einfache Xvid-Kommandozeile für Simple-Profil Level 3 (15FPS und 200kbps ⇒ kleine Filme):

# mencoder -mc 0 -forceidx -oac lavc -lavcopts acodec=mp2:abitrate=128 -srate 44100 -ovc xvid -xvidencopts profile=sp3:bitrate=200 -vf-pre scale=320:-2,expand=:240:::1,crop=320:240 -ofps 15 -of avi -o ${AUSGABEDATEI} ${QUELLVIDEO}

Xvid-Kommandozeile für Simple-Profil Level 3 mit weiteren Bildoptimierungs-, Deinterlacing- und Deblocking-Filtern (15FPS und 300kbps ⇒ Filme mit guter Qualität):

# mencoder -mc 0 -forceidx -oac lavc -lavcopts acodec=mp2:abitrate=128 -srate 44100 -ovc xvid -xvidencopts profile=sp3:max_bframes=0:me_quality=6:trellis:chroma_opt:hq_ac:vhq=4:lumi_mask:threads=1:bitrate=300 -vf-pre pp=tn:0/ci/hb/vb/dr/al,scale=320:-2,expand=:240:::1,crop=320:240,softskip,harddup -ofps 15 -of avi -o ${AUSGABEDATEI} ${QUELLVIDEO}

Xvid-Kommandozeile mit 20 Bildern pro Sekunde, weiteren Bildoptimierungs-, Deinterlacing- und Deblocking-Filtern (20FPS und 300kbps ⇒ Filme mit guter Qualität):

# mencoder -mc 0 -forceidx -oac lavc -lavcopts acodec=mp2:abitrate=128 -srate 44100 -ovc xvid -xvidencopts max_bframes=0:me_quality=6:trellis:chroma_opt:hq_ac:vhq=4:lumi_mask:threads=1:bitrate=300 -vf-pre pp=tn:0/ci/hb/vb/dr/al,scale=320:-2,expand=:240:::1,crop=320:240,softskip,harddup -ofps 20 -of avi -o ${AUSGABEDATEI} ${QUELLVIDEO}

Ausprobiert habe ich auf meinem Player nur Video-Bitraten von 150-300 kbps. Bei 150 kbps hat man in bewegten Szenen deutlich gesehen, dass die Bitrate etwas zu gering war.

Auf dem 2,4 Zoll-Display lag das subjektive Optimum zwischen Qualität und Dateigröße bei ca. 200kbps, auf dem PC lag es dagegen bei ca. 300kbps.

Ich verwende 3Bit je dargestellten Bildpunkt für die Video-Bitrate.


Hier stelle ich noch ein paar Kommandozeilen vor, dessen Filme eigentlich auf meinem MiniPlayer laufen sollten, die jedoch nicht wollten, aber die möglicherweise auf anderen MiniPlayern laufen können.

einfachste Kommandozeile:

# mencoder -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=320:240 -ffourcc XVID -ofps 15 -o ${AUSGABEDATEI} ${QUELLVIDEO}

einfache Kommandozeile:

# mencoder -mc 0 -forceidx -oac lavc -lavcopts acodec=mp2:abitrate=128 -srate 44100 -ovc lavc -lavcopts vcodec=mpeg4:threads=1:vbitrate=300:autoaspect:nr=0 -vf-pre scale=320:-2,expand=:240:::1,crop=320:240 -ofps 15 -of avi -ffourcc XVID -o ${AUSGABEDATEI} ${QUELLVIDEO}

Kommandozeile mit vielen Optimierungen, die zu einer kleineren Datei führen:

# mencoder -mc 0 -forceidx -oac lavc -lavcopts acodec=mp2:abitrate=128 -srate 44100 -ovc lavc -lavcopts vcodec=mpeg4:threads=1:vbitrate=300:vrc_maxrate=384:vrc_buf_size=640:autoaspect:vmax_b_frames=0:mbd=2:v4mv:cbp:mv0:mv0_threshold=0:trell:qprd:umv:lumi_mask=0.1:dark_mask=0.1:p_mask=0.1:nr=0 -sws 9 -vf-pre pp=tn:0/ci/hb/vb/dr/al,harddup,scale=320:-2,expand=:240:::1,crop=320:240 -ofps 15 -of avi -ffourcc XVID -o ${AUSGABEDATEI} ${QUELLVIDEO}
/home/http/wiki/data/pages/film_transcodieren_fuer_mobile_miniplayer.txt · Zuletzt geändert: von manfred