Linux TechniSat TechniPlayer MEncoder MPlayer USB
TechniSat TechniPlayer - Anschliessen an und Befüllen mit Linux
History
06. Jan 2008: Kleinere Korrekturen
05. Jan 2008: Erste Version
Allgemeines
Der TechniSat
TechniPlayer ist etwas kleiner als eine Zigarettenschachtel (75x42x14 mm) und
hat ein 2-Zoll-Farbdisplay mit einer Auflösung von 220x176 Pixel. Das ist
nicht gerade üppig - es ist also mehr ein Gerät mit dem man primär Musik und
Radio hören und gelegentlich auch mal ein Video ansehen kann. Dafür ist das
Gerät schon ab 70 Euro zu haben (Stand: Ende 2007). Es gibt 7 Bedienknöpfe,
einen Ein/Aus-Schalter, einen USB-Anschluss, eine Klinkenbuchse (3,5 mm) und
einen Steckplatz für eine SD-Speicherkarte. Der interne Speicher ist (bei dem
mir vorliegenden Gerät) 2 GB gross. Weitere technische Einzelheiten kann man
auf der Website von TechniSat nachlesen.
Das Gerät sieht edel aus, wenn es neu ist, aber es verkratzt leicht
(Display-Schutzfolie benutzen!) und durch das ständige Befingern bildet
sich schnell eine leider gut sichtbare Schmierschicht. Ein Brillenputztuch tut
gute Dienste, insbesondere, wenn man sich anschickt, ein Video anzuschauen.
Dem Gerät liegt u.a. ein USB-Anschlusskabel und eine CD bei, die eine
Windows-Software enthält, mit der man Media-Dateien für den TechniPlayer
konvertieren kann. Jetzt kommt sozusagen der Akt, wo der Frosch ins Wasser
springt: Wie macht man das mit Linux?
Anschliessen
Der TechniPlayer wird unter Linux als USB Storage-Device erkannt.
Unerklärlicherweise schlugen zunächst alle Versuche, Dateien auf das Gerät zu
kopieren fehl (Buffer I/O error on device). Nach einigem Gefluche bin
ich dann auf die Idee gekommen, dass es möglicherweise eine neuere Firmware für
das Gerät gibt und dass es klug wäre, diese erstmal einzuspielen, bevor ich
anfange, an meinem Linux herumzudoktern. Tatsächlich war die Firmware auf dem
Gerät von Juni 2007, die neueste ist jedoch vom 21.08.2007 und auf der Website
von TechniSat erhältlich. Immerhin. Natürlich braucht man ein Windows-Tool zum
Einspielen der Firmware; also musste der Rechner meines Bruders herhalten.
Danach ging alles glatt:
kernel: usb 5-4: new high speed USB device using ehci_hcd and address 10
kernel: usb 5-4: new device found, idVendor=071b, idProduct=3203
kernel: usb 5-4: new device strings: Mfr=1, Product=2, SerialNumber=3
kernel: usb 5-4: Product: ROCK MP3
kernel: usb 5-4: Manufacturer: RockChip
kernel: usb 5-4: SerialNumber: USBV1.00
kernel: usb 5-4: configuration #1 chosen from 1 choice
kernel: scsi10 : SCSI emulation for USB Mass Storage devices
kernel: usb-storage: device found at 10
kernel: usb-storage: waiting for device to settle before scanning
kernel: Vendor: RockChip Model: USB MP3 Rev: 1.00
kernel: Type: Direct-Access ANSI SCSI revision: 00
kernel: SCSI device sdb: 4082176 512-byte hdwr sectors (2090 MB)
kernel: sdb: Write Protect is off
kernel: sdb: Mode Sense: 03 00 00 00
kernel: sdb: assuming drive cache: write through
kernel: SCSI device sdb: 4082176 512-byte hdwr sectors (2090 MB)
kernel: sdb: Write Protect is off
kernel: sdb: Mode Sense: 03 00 00 00
kernel: sdb: assuming drive cache: write through
kernel: sdb: unknown partition table
kernel: sd 10:0:0:0: Attached scsi removable disk sdb
kernel: sd 10:0:0:0: Attached scsi generic sg1 type 0
kernel: Vendor: RockChip Model: USB SD Rev: 1.00
kernel: Type: Direct-Access ANSI SCSI revision: 00
kernel: sd 10:0:0:1: Attached scsi removable disk sdc
kernel: sd 10:0:0:1: Attached scsi generic sg2 type 0
kernel: usb-storage: device scan complete
Der Inhalt des internen Speichers musste leider als Kollateralschaden dran
glauben; nach dem Firmware-Update musste ich ihn unter Windows mit FAT neu
formatieren. Aber das Mounten von /dev/sdb, sowie Lesen und Schreiben
funktioniert jetzt einwandfrei.
Media-Dateien umkodieren
Audio
Kein Problem: Eine mit
LAME
kodierte MP3-Datei ist ohne weiteres abspielbar. LAME ("LAME Ain't an Mp3
Encoder") muss man aus dem Quellcode selbst kompilieren, aber der übliche
Dreisprung ./configure, make und make
install tut. Die ersten beiden Sprünge führt man als nicht
privilegierter Benutzer und den letzten als "root" aus. Danach ein
lame datei.wav datei.mp3
und man hat eine auf dem TechniPlayer abspielbare MP3-Datei. Will man
zusätzlich ID3-Tags erzeugen, kann man beispielsweise
id3v2
benutzen.
Video
Videos für den TechniPlayer unter Linux zu erzeugen, ist schon eher eine
Herausforderung. Dass es grundsätzlich gehen müsste, ahnt man, wenn man eine
mit dem Windows-Tool konvertierte Datei untersucht. Dort lacht einem folgendes
entgegen:
linux$ mplayer -v datei.avi
MPlayer 1.0xxxxxxxx-SUSE Linux 10.x (i686) (C) 2000-200x MPlayer Team
[...]
VIDEO: [XVID] 224x176 12bpp 20.000 fps 398.7 kbps (48.7 kbyte/s)
[V] filefmt:3 fourcc:0x44495658 size:224x176 fps:20.00 ftime:=0.0500
Clip info:
Software: MEncoder Sherpya-MinGW-20060312-4.1.0
[...]
MPEG 1.0, Layer II, 44100 Hz 128 kbit Stereo, BPF: 417
Channels: 2, copyright: No, original: Yes, CRC: No, emphasis: 0
AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400)
Bei dem OEM, der den Player für TechniSat herstellt, kocht man also auch nur
mit (OpenSource-) Wasser. Etwas merkwürdig finde ich die reduzierte Framerate
von 20 fps (anstatt der üblichen 25 fps) und dass MP2- (MPEG-1 Layer 2) und
nicht MP3- (MPEG-1 Layer 3) Audio verwendet wird (was man bei einem MP3-Player
eigentlich erwarten würde). Möglicherweise liegt diesen Massnahmen der Versuch
zugrunde, die zum Dekodieren erforderliche Rechenleistung möglichst gering zu
halten.
Um es kurz zu machen: Ich habe lange rumprobiert, um mit dem MEncoder unter Linux
TechniPlayer-kompatible Videos zu erzeugen. Schliesslich und endlich ist folgendes
Skript dabei herausgekommen:
#!/bin/bash
#
# technip-conv.sh
#
# set -x
function usage () {
echo "benutzung: `basename $0` -v <VIDEO bitrate> -a <AUDIO bitrate> \
-c <VIDEO FILTER args> QUELLDATEI ZIELDATEI"
echo "defaults: -v 400 -a 128 -c dsize=1.25,scale=224:176"
echo "Die Namen der Quell- und Zieldatei duerfen nicht uebereinstimmen."
echo "Einfachstes Beispiel: `basename $0` QUELLDATEI ZIELDATEI"
exit 1
}
echo "Konvertierung nach AVI/XVID/MP2 fuer TechniSat TechniPlayer"
while getopts "v:a:c:" opt; do
case $opt in
v) VRATE="$OPTARG"
;;
a) ARATE="$OPTARG"
;;
c) SCALE="$OPTARG"
;;
\?) usage
;;
esac
done
shift $(($OPTIND - 1))
if [ "$#" -lt "2" ]; then
usage
fi
SOURCE=$1
TARGET=$2
test -f $SOURCE || usage
if [ $SOURCE == $TARGET ]; then
usage
fi
test -z $VRATE && VRATE="400"
test -z $ARATE && ARATE="128"
test -z $SCALE && SCALE="dsize=1.25,scale=224:176"
echo " video br: $VRATE"
echo " audio br: $ARATE"
echo " vfilter: $SCALE"
echo "quelldatei: $SOURCE"
echo -n " Start: "
date
nice -n 19 mencoder -noodml $SOURCE -vf $SCALE -ofps 20 -ovc xvid -xvidencopts \
bitrate=$VRATE:max_bframes=0:quant_type=h263 -srate 44100 -oac lavc \
-lavcopts acodec=mp2:abitrate=$ARATE -o $TARGET > /dev/null 2>&1
echo -n " Ende: "
date
exit 0
Der Aufruf des MEncoder mit den richtigen Parametern am Schluss des Skripts
macht den Job. Natürlich kann man sich das Drumherum des Skripts auch schenken
und den MEncoder direkt aufrufen. Die besagten Parameter sind unmittelbar aus
dem Skript ersichtlich.
Viel Spass mit dem TechniPlayer ohne Windows!
Copyright (c) 2008 daniel(-at-)bischof.org - Permission is granted to copy,
distribute and/or modify this document under the terms of the
GNU Free Documentation License, Version 1.2 (GFDL).
|