![](https://seccdn.libravatar.org/avatar/e4dd9160371e324d4fa49c105b89b175.jpg?s=120&d=mm&r=g)
Hallo Liste,
vor einiger Zeit habe ich mich hier auf der Liste gemeldet, um
herauszubekommen, wie man den mencoder aufrufen muss, damit er von meiner
analogen, v4l2-kompatiblen TV-Karte (Terratec Cinergy 400 TV mobile) eine
ordentliche Aufzeichnung macht, die ich anschließend ohne neu codieren zu
müssen (schneiden und) auf meinem DVD-Standalone-Player abspielen zu können.
Ich hatte damals insbesondere das Problem, dass die Aufzeichnung direkt nicht
auf dem Player wollte (obwohl tcprobe nur gutes meldete), nach einer
Neukodierung mittels
ffmpeg -i Aufnahme.mpg -target dvd ./Aufnahme-ffmpeg.mpg oder so ähnlich
jedoch hervorragend dort lief. Beim Troubleshooting taten sich immer neue
"Fronten" auf (vA sehr viele ERR: SCR ... Meldungen,
A/V-Synchronisationsprobleme), so dass ich dann irgendwann die Segel
gestrichen habe.
Nun habe ich die Einstellungen/Werte/Parameter gefunden, mit denen ich seit
einigen Wochen täglich eine Serie von 35 Minuten Länge aufnehme, anschließend
mit ProjectX die Werbung herausschneide und dann für jede Woche mit
qdvdauthor bzw. dvdwizard daraus eine DVD erstelle, welche auch anstandslos
auf meiner standalone-Kiste läuft. Ich möchte meinen mencoder-Aufruf hier
einmal posten und die Parameter erläutern, falls jemand von der Liste
ähnliches machen möchte und auch Probleme dahingehend hat:
<cut>
sudo nice --20 /usr/bin/mencoder tv://
#starte mencoder mit höchstmöglicher Priorität (um bei meinen sehr
ambitionierten Qualitätseinstellungen flüssige Aufnahmen zu gewährleisten.
Außerdem mache ich vorher noch ein "init 3". Sudo muss entsprechend
konfiguriert sein) und wähle als Eingangssignalquelle die TV-Karte
-tv
driver=v4l2:norm=PAL:device=/dev/video0:input=0:quality=0:width=720:height=576:channel=E11:adevice=/dev/dsp1:immediatemode=0
#lege die Optionen für die TV-Karte fest: Video4linux2-Treiber, PAL-Norm,
Aufnahme von /dev/video0 und input 0 (in meinem Fall: analoges TV). Ton liegt
an /dev/dsp1, welches beim Laden der TV-Kartenmodule erzeugt wird.
Immediatemode=0 gibt an, dass der Sound nicht über ein Kabel (über den
Line-in) in den Rechner kommt.
-oac lavc -ovc lavc
#verwende zum Kodieren von sowohl Ton als auch Bild die libavcodec
-lavcopts
vcodec=mpeg2video:vbitrate=4650:vratetol=15000:aspect=1.34095:acodec=ac3:abitrate=224:keyint=15
#nehme Bilder im mpeg2-codec mit einer Bitrate von zB 4650 kbit/s auf bei
einer Toleranz von 15000 kbit (Gesamtdatei). Als Audiocodec wird ac3 mit
einer Rate von 224 kbit/s verwendet. Alle 15 Bilder wird ein Keyframe
eingefügt (mit höheren Werten tauchten bei mir gehäuft ERR: SCR: [...] auf).
Das Seitenverhältnis der Aufnahme betrage 1.34095
-vf crop=704:560:8:8,pp=lb,scale=720:576,hqdn3d=4:3:6,harddup
#Die Videofilter. Ich nehme nur den inneren Teil des Bildes mit den
Abmessungen 704x560, um die verwischten/verwackelten Bildränder los zu
werden. Anschließend wird deinterlaced (linear blend - pp=lb), das Bild neu
skaliert (auf 720x576, eine PAL-konforme Größe) und mit dem hochqualitativen
Entrauscher (hqdn3d) nachbearbeitet. Nicht zu vergessen der harddup Filter.
Er bewirkt, dass aufeinanderfolgende, identische Bilder jeweils einzeln in
den Datenstrom eingebaut werden. Dieser Filter ist für das mpeg-Dateiformat
essentiell! Wird er vergessen, bekommt man haufenweise Probleme, z.B. ERR:
SCR: [...], oder dass Bild und Ton stark auseinanderlaufen.
-of mpeg
-mpegopts format=dvd:vaspect=4/3
#Verwende das mpeg Dateiformat (mpeg Multiplexer) für die Ausgabedatei
(Standard:AVI). Die Option sagt dem Muxer, dass er DVD-kompatibel arbeiten
und dabei ein Seitenverhältnis von 4/3 verwenden soll.
-af lavcresample=48000:volnorm
-srate 48000
#hier wird der Ton nachbearbeitet. Er kommt von der TV-Karte mit einer
unpassenden Samplingrate und viel zu leise. Es wird daher die Lautstärke
normalisiert und mit Hilfe der libavcodec auf DVD-kompatible 48 kHz
geresampelt. Die Angabe hinter -srate legt die Samplingrate des
Ausgangsdatenstromes fest.
-noskip
#besagt, dass keine Bilder übersprungen werden sollen.
-endpos 00:00:01
-o "/home/benni/untitled/PRO7_`/bin/date +%a_%d.%b.%G_%H%M%S`.mpg"
#Mit Endpos wird die Aufnahmezeit angegeben, und mit -o der Dateiname und
Speicherort für die Aufnahme.
Das ganze funktioniert auf meinem Acer Travelmate 290 (1,5 GHz Centrino, 512
MB RAM) für Aufnahmen von bis zu 40 Minuten, wenn wirklich alle Resourcen für
die Kodierung verwendet werden können - daher der Start mit Nice-Level -20
und das vorherige init 3. Bei längeren Aufnahmezeiten oder langsamerem
Rechner muss man das System entsprechend entlasten (niedrigere
Qualitätseinstellungen vornehmen), es kommt ansonsten zu Pufferüberläufen und
damit einhergehenden Frame-Drops mitsamt aller Probleme.
Nach der Aufnahme starte ich ProjectX, schneide die Werbung heraus und lasse
den Stream demuxen. Dann noch ein
mplex -f 8 PRO7_