ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Videograbbing

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

"Videograbbing" ist die Betrachtung oder Aufnahme (Digitalisierung) von Videos von externen analogen Videoquellen mittels einer TV-Karte oder Video-Capture-Karte (auch Videograbber oder nur Grabber genannt). Auch eine Webcam oder Spezialgeräte wie z.B. ein USB-Mikroskop können dafür genutzt werden (im weiteren Artikel ist vereinfachend nur von einer TV-Karte die Rede).

Hinweis:

Im Unterschied zu den großen Lösungen wie MythTV oder VDR geht es hier darum, ohne großen Installationsaufwand eine Videoquelle zu betrachten und Aufnahmen zu erstellen.

Die Angaben in diesem Artikel wurden mit einem EasyCAP DC 60 Videograbber und einem Medion:Medion TV-Tuner 7134 PCMCIA auf einem System mit 1 GB RAM und einer Dualcore-CPU mit 1,83 Mhz getestet.

Anwendungsgebiete

Wiki/Icons/Oxygen/media-tape.png Betrachten und Digitalisieren von VHS-Kassetten (VHS rippen)

Wiki/Icons/Oxygen/camera-web.png Nutzung einer Überwachungskamera, Webcam, USB-Mikroskop ...

Wiki/Icons/Oxygen/video-television.png Fernsehen/ Aufnehmen vom Sat- oder Kabelreceiver

Hardwarevoraussetzungen

Wiki/Icons/Oxygen/hwinfo.png Für das Videograbbing eignet sich jede TV-Karte mit Composite- und/oder S-Video-Eingang, sofern sie von Linux erkannt wird). Für die Aufnahme von einem VHS-Rekorder mit analogem Antennenausgang kann auch der analoge Antenneneingang einer TV-Karte genutzt werden.

Hardwareschnelltest

Nach dem Hochfahren des Systems bzw. nach dem Einstecken der Karte (PCMCIA oder USB) zeigt der Aufruf von

ls /dev/video* 

ob ein Videogerät angelegt wurde, bzw. wie viele Videogeräte im System vorhanden sind. Wenn der Eintrag /dev/video0 (bzw. /dev/video1 ... 2 ... bei mehreren Karten im System) zwar vorhanden ist, aber der Zugriff verweigert wird, dann kann mit

sudo chmod a+r /dev/video0 

das Videogerät für alle Nutzer lesbar gemacht werden.

Wenn der Eintrag /dev/video0 überhaupt nicht vorhanden ist, dann ist noch Handarbeit für die Installation nötig. Ein Blick auf die Ausgabe von

dmesg 

gibt detaillierte Informationen über die Karte, die geladenen Treiber und eventuelle Fehlermeldungen.

Konfiguration

Wiki/Icons/Oxygen/preferences-system.png Für die Konfiguration der Betrachter- und Aufnahmeprogramme muss man die Gerätedateien ("device nodes") kennen, an denen das Betrachterprogramm das Video- und Audiosignal „abholen“ kann.

Videogerät

Linux legt für jede (erkannte) analoge TV-Karte im System den Geräteknoten /dev/videoX an (/dev/video0 für die erste TV Karte, /dev/video1 für die zweite etc.). Die einzelnen Eingänge der TV-Karte werden als Input angesprochen. In der Syntax von MPlayer sieht das dann bei einer Karte mit Analog-TV, Composite (CVBS), und S-Video Eingängen (z.B. Medion TV-Tuner 7134 PCMCIA) so aus:

  • Analog TV: device=/dev/video0:input=0

  • Composite: device=/dev/video0:input=1

  • S-Video: device=/dev/video0:input=2

Audiogerät

ALSA-Soundsystem

Aus Sicht des ALSA-Soundsystems gilt die TV-Karte einfach als weitere Soundkarte. Weil in der Regel eine Soundkarte im System vorhanden ist, ist die erste TV-Karte die zweite Soundkarte. Die Nummern der Soundkarten können mit den Befehl

cat /proc/asound/cards 

Beispiel für die Ausgabe auf der Konsole:

0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xf0580000 irq 43
 1 [EasyALSA0      ]: easycapdc60 - easycap_alsa
                      easycap_alsa
 2 [SAA7134        ]: SAA7134 - SAA7134
                      saa7134[0] at 0x48000000 irq 18

in Erfahrung gebracht werden. In der Syntax von ALSA hat der Eingang der zweiten Soundkarte die Bezeichnung: hw:1,0. In der Syntax von MPlayer wird die Soundeingabe der TV-Karte so angesprochen:

  • alsa:adevice=plughw.1,0

Alternativ kann der Name der Soundkarte (steht hinter der Nummer in eckigen Klammern) angegeben werden. Das ist bei manchen Webcam-Modellen notwendig. Beispiel für MPlayer:

  • alsa:adevice=plughw.SAA7134

OSS

Hinweis:

OSS Audio wird nur noch unter Lucid unterstützt

Das Audiosignal wird im OpenSoundSystem auf /dev/dsp ausgegeben. Um den Ton von der TV-Karte zu bekommen, müssen die Mixereinstellungen (am Besten mit alsamixer in der Konsole) entsprechend angepasst werden.

In der Syntax von MPlayer wird die Soundeingabe über OSS so angesprochen:

  • :adevice=/dev/dsp

Audio über Line-in

Wenn die TV-Karte keinen Audioeingang hat (z.B. eine Webcam), oder wenn er einfach nicht funktioniert, dann kann das Audiokabel auch am Line-in- (oder Mikrofon-)Eingang der Soundkarte angeschlossen werden. Im Betrachter-/Aufnahmeprogramm müssen dann nur die entsprechenden Parameter der Soundkarte (z.B. bei ALSA: hw:0,0) angegeben und die Mixereinstellungen entsprechend angepasst werden.

Hinweis:

Alle folgenden Beispiele gehen davon aus, dass das Videosignal vom Geräteknoten /dev/video0 kommt, die Input-Nummer ist 1 und die TV-Karte wird von ALSA als zweite Soundkarte registriert.

Bei einer anderen Konfiguration des Systems müssen die Angaben für tvtime, MPlayer/MEncoder oder VLC entsprechend der Konfigurationshinweise (siehe oben) geändert werden.

Betrachten mit tvtime

tvtime/tvtime_logo.png tvtime ist ein Fernsehanzeigeprogramm für analogen TV-Empfang, bei dem vor allem auf die Bildqualität wert gelegt wird. Mit tvtime kann jede analoge Videoquelle unter Linux betrachtet werden. Aufnehmen ist mit tvtime nicht möglich. Wenn tvtime über das Menü aufgerufen wird, kann man im OSD von tvtime über "Eingangssignal -> Videoquelle wählen" den Eingang der TV-Karte auswählen, an dem die Videoquelle angeschlossen ist. Nicht alle TV-Karten spielen mit tvtime auch den Ton ab.

tvtime mit SoX im Terminal aufrufen

SoX, ein universaler Audioplayer und -konverter für die Kommandozeile, wird benötigt, wenn man mit tvtime keinen Ton hört. Auf der Kommandozeile kann man tvtime gemeinsam mit Sox zum Abspielen des Tons aufrufen.

tvtime mit SoX (ALSA)

tvtime -d /dev/video0 -i 1 -n PAL | sox -t alsa plughw:1,0 -s2 -c 2 -r 48000 -s2 -t alsa default 

tvtime mit SoX (OSS)

tvtime -d /dev/video0 -i 1 -n PAL | sox -t raw -s2 -c 2 -r 48000 -s2 -t ossdsp /dev/dsp 

Eine alternative Lösung, um tvtime mit Hilfe von GStreamer zum tönen zu bringen, wird im Artikel tvtime beschrieben.

VHS über den analogen Antenneneingang mit tvtime betrachten

Hinweis:

Wenn bei der TV-Karte zuvor ein anderer Eingang (z.B. Composite) genutzt wurde, dann funktioniert der Antennenempfang gegebenenfalls nur, wenn die Karte zuvor neu initialisiert wurde (z.B. über das Aus- und wieder Einstecken der Karte bzw. Neustart des Systems).

tvtime wurde entwickelt, um analoges Antennenfernsehen unter Linux sehen zu können. VHS-Rekorder geben beim Abspielen das Videosignal auch über den Antennenausgang aus. Mit tvtime kann man das ausnutzen, um alte VHS-Aufnahmen anzuschauen. Dafür muss das Antennenkabel beim Ausgang des VHS-Rekorders und beim (analogen) Antenneneingang der TV-Karte angesteckt werden. Während eine Kassette abspielt, wird mit tvtime eine Kanalsuchlauf durchgeführt.

Wenn bei diesem Verfahren zwar das Video zu sehen aber kein Ton zu hören ist, kann man den Befehl tvtime mit SoX verwenden. Die Input-Nummer muss entsprechend angepasst werden, sie kann aber auch im OSD-Menü von tvtime umgestellt werden.

Betrachten/Aufnehmen mit MPlayer/Mencoder

MPlayer/mplayer-logo.png Mplayer und MEncoder werden in den entsprechenden Wikiartikeln in ihrer Funktion beschrieben. Wer mehr über die in den MPlayer- und MEncoder-Befehlen verwendeten Optionen, weitere Einstellungsmöglichkeiten und die Tastatursteuerung wissen möchte, kann die Manpage {de} (sehr umfangreich) zu Rate ziehen.

Betrachten mit MPlayer

Betrachten der Videoquelle ohne Sound

mplayer tv:// -tv driver=v4l2:width=720:height=576:outfmt=uyvy:device=/dev/video0:input=1:fps=25 -nosound 

Betrachten der Videoquelle mit Sound (ALSA)

mplayer tv:// -tv driver=v4l2:width=720:height=576:outfmt=uyvy:device=/dev/video0:input=1:fps=25:alsa:amode=1:forcechan=2:audiorate=48000:adevice=plughw.1,0:forceaudio:immediatemode=0 -ao sdl,alsa 

Betrachten der Videoquelle mit Sound (OSS)

mplayer tv:// -tv driver=v4l2:width=720:height=576:outfmt=uyvy:device=/dev/video0:input=1:fps=25:amode=1:forcechan=2:audiorate=48000:adevice=/dev/dsp:forceaudio:immediatemode=0 -ao oss,sdl 

Aufnehmen mit MEncoder

Der Vorteil bei der Aufnahme mit MEncoder liegt darin, dass in Kombination mit den unten angegebenen Filtern Videodateien entstehen, die nicht mehr umkodiert werden müssen.

DivX/avi ist ein speichersparendes universales MPEG4/MP3-Format (ca. 10MB/ Minute), das von nahezu allen Media- und Hardwareplayern (z.B. DVD-Player, PVR-Receiver) abgespielt werden kann. Die Qualität kann durch Erhöhen oder Herabsetzen der Bitrate (Standardeinstellung: vbitrate=1200 ) verändert werden.

Hinweis:

Die Installation von lame (MP3-Encoder) ist notwendig für die Aufnahme im DivX/avi-Format!

Das MPEG2/MP2-DVD-Format eignet sich zum Erstellen von eigenen DVDs (ca. 40 MB/ Minute). Die aufgenommen avi oder mpeg-Videos können anschließend z.B. mit Avidemux geschnitten werden.

Aufnehmen (DivX/avi) der Videoquelle ohne Sound

mencoder tv:// -tv driver=v4l2:width=720:height=576:outfmt=uyvy:device=/dev/video0:input=1:fps=25 -nosound -ffourcc DX50 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:turbo:vbitrate=1200:keyint=15 -o Aufnahme.avi  

Aufnehmen (DivX/avi) der Videoquelle mit Sound (ALSA)

mencoder tv:// -tv driver=v4l2:width=720:height=576:outfmt=uyvy:device=/dev/video0:input=1:fps=25:alsa:adevice=plughw.1,0:audiorate=48000:amode=1:forceaudio:immediatemode=0 -ffourcc DX50 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:turbo:vbitrate=1200:keyint=15 -oac mp3lame -o Aufnahme.avi  

Aufnehmen (DivX/avi) der Videoquelle mit Sound (OSS)

mencoder tv:// -tv driver=v4l2:width=720:height=576:outfmt=uyvy:device=/dev/video0:input=1:fps=25:adevice=/dev/dsp:audiorate=48000:amode=1:forceaudio:immediatemode=0 -ffourcc DX50 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:turbo:vbitrate=1200:keyint=15 -oac mp3lame -o Aufnahme.avi  

Aufnehmen (MPEG2-DVD) der Videoquelle mit Sound (ALSA)

mencoder tv:// -tv driver=v4l2:width=720:height=576:outfmt=uyvy:device=/dev/video0:input=1:fps=25:alsa:adevice=plughw.1,0:audiorate=48000:amode=1:forceaudio:immediatemode=0 -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=8000:vbitrate=5000:keyint=15:acodec=ac3:abitrate=192:aspect=4/3 -o test.mpg  

Tipps und Tricks

Nützliche Zusatzoptionen für MPlayer/MEncoder

-aspect 16:9 ändert das Bildformat bei der Wiedergabe auf 16:9
-endpos hh:mm:ss Beendet die Wiedergabe/Aufnahme nach Ablauf der angegebenen Zeit
Videofilter für MPlayer/MEncoder

Wenn die Filter bei der Aufnahme mit MEncoder eingesetzt werden, muss das Video nicht mehr nachbearbeitet werden.

-vf eröffnet die Filterkette, nach einem Leerzeichen werden die einzelnen Filter, jeweils durch ein Komma getrennt, angefügt
pp=lb ein Deinterlace-Filter (hat sich u.a. bei der Digitalisierung von VHS-Kassetten bewährt)
crop=w:h:x:y schneidet einen Ausschnitt aus dem Videorahmen heraus. w ist die Breite und h die Höhe des Ausschnitts, x gibt an wie viele Pixel der Ausschnitt von links verschoben ist, und y gibt an, wie viele Pixel der Ausschnitt von unten verschoben ist.
scale=w:h verkleinert oder vergrößert das Video entsprechend der angegebenen Pixelwerte. Ein Verkleinern des Videos erhöht (!) die Qualität, weil es Artefakte verringert.

Beispiele:

Beim Zuschneiden oder Skalieren des Videos ist zu beachten, dass das Seitenverhältnis (4:3 oder 16:9) beibehalten wird, um Verzerrungen zu vermeiden. Die Werte von Breite und Höhe sollten immer ein Vielfaches von 8 sein, damit das Video zum AVI-Standard kompatibel bleibt.

crop=720:406:0:68 schneidet von einem 4:3 Video oben und unten einen Balken mit 68 px Breite ab, das Ergebnis ist eine Video im Verhältnis 16:9
crop=720:568:0:8 schneidet von einem 4:3 (VHS)-Video unten einen 8 px breiten Rand (flimmernde Kontrollspur) weg
scale=640:480 verkleinert eine 4:3 Video
scale=704:396 verkleinert ein 16:9 Video
crop=720:320:0:43 schneidet von einem Cinemascope Film der im 16:9 Format vorliegt die schwarzen Ränder ab

Beispiel für ein Filterkette (wird am Ende des MEncoder-Befehls angehängt):

-vf pp=lb,crop=720:406:0:68,scale=704:396

VHS betrachten/aufnehmen über den analogen Antenneneingang mit MPlayer/MEncoder

Für MPlayer/MEncoder gelten die gleichen technischen Voraussetzungen wie für tvtime.

Kanäle durchsuchen

mplayer tv:// -tv driver=v4l2:chanlist=europe-west 

Mit den Tasten H (= higher) und L (= lower) kann man die Kanäle durchsuchen (wird auf der Konsole angezeigt), bis man den Kanal des VHS-Rekorders gefunden hat. Wenn der Kanal gefunden ist, kann man ihn in die Befehlszeile eintragen:

mplayer tv:// -tv driver=v4l2:chanlist=europe-west:channel=60 

Um den Ton zu hören, müssen noch die Parameter für das Audiogerät angehängt werden:

mplayer tv:// -tv driver=v4l2:chanlist=europe-west:channel=60:alsa:adevice=plughw.1,0:audiorate=48000:amode=1:forceaudio:immediatemode=0 

Zum Aufnehmen verwendet man die schon von oben bekannte MEncoder-Befehlszeile mit der Angabe der chanlist und des channel.

mencoder tv:// -tv driver=v4l2:chanlist=europe-west:channel=60:fps=25:alsa:adevice=plughw.1,0:audiorate=48000:amode=1:forceaudio:immediatemode=0 -ffourcc DX50 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:turbo:vbitrate=1200:keyint=15 -oac mp3lame -o test.avi 

Aufnehmen mit FFmpeg / avconv

FFmpeg/libav_logo.pngFFmpeg (ab Ubuntu 12.04 avconv) ist ein Konsolenprogramm zum Konvertieren von Mediendateien, mit dem auch analoge Videoquellen aufgezeichnet werden können. Betrachten ist mit ffplay (avplay) möglich. In den Grundfunktionen ist FFmpeg/avconv mit Mencoder vergleichbar.

Hinweis:

Für die folgenden Befehle müssen die libav...-extra Pakete (Unterstützung für den MP3-Encoder) installiert sein.

FFmpeg bis Ubuntu 11.04

Aufnehmen (DivX/avi) der Videoquelle (ALSA)

ffmpeg -f video4linux2 -aspect 1.3333 -s 720x576 -r 25 -vc 1 -pix_fmt yuv420p -i /dev/video0 -f alsa -ar 44100 -ac 2 -acodec pcm_s16le -i hw:1 -vcodec mpeg4 -vtag DX50 -b 1200k -r 25 -acodec libmp3lame -ar 44100 -ac 2 -ab 128k -y test.avi 

Aufnehmen (DivX/avi) der Videoquelle (OSS)

ffmpeg -f video4linux2 -i /dev/video0 -aspect 1.3333 -s 720x576 -r 25 -vc 1 -pix_fmt yuv420p -f oss -ar 44100 -ac 2 -acodec pcm_s16le -i /dev/dsp -vcodec mpeg4 -vtag DX50 -b 1200k -r 25 -acodec libmp3lame -ar 44100 -ac 2 -ab 128k -y test.avi 

Undokumentierte Einstellungen für FFmpeg

FFmpeg ist weniger umfangreich dokumentiert als MPlayer/MEncoder.

Über den Parameter -vc 1 kann man die input Nummer an der TV-Karte angeben. In der Manpage von FFmpeg steht, dass dieser Parameter nur für DV1394 Geräte gilt.

FFmpeg in Ubuntu 11.10

Achtung!

Die in Ubuntu 11.10 enthaltene Version von FFmpeg (0.7.2-4) arbeitet nicht mit einer TV-Karte zusammen. Auf der Konsole wird folgende Fehlermeldung ausgegeben: /dev/video0: could not find codec parameters

Ab Ubuntu 12.04

avconv ist in Ubuntu der auf Libav {en} basierende Nachfolger von ffmpeg (das "alte" FFmpeg wird getrennt von Libav weiterentwickelt). Folgende Befehlszeile für die TV-Aufnahme funktioniert in Ubuntu 12.04, die Qualität kommt aber (noch) nicht an Mencoder heran.

Aufnehmen (DivX/avi) der Videoquelle (ALSA)

avconv -f video4linux2 -aspect 1.3333 -s 720x576 -channel 1 -pix_fmt yuv420p -i /dev/video0 -f alsa -ar 44100 -ac 2 -acodec pcm_s16le -i hw:1 -vcodec mpeg4 -vtag DX50 -b 1200k -r 25 -acodec libmp3lame -ar 44100 -ac 2 -ab 128k -y test.avi  

Betrachten/Aufnehmen mit VLC

VLC/vlc-logo.png Der VLC-Mediaplayer wird im entsprechenden Wikiartikel beschrieben. Er hat nicht nur ein grafisches Menü, sondern kann auch von der Kommandozeile mit direkt angegebenen Parametern gestartet werden.

Betrachten mit VLC (ALSA)

vlc v4l2:///dev/video0:input=1:width=720:height=576:norm=PAL :input-slave=alsa://plughw:1,0 --demux rawvideo 

vlc-eingabe2.png

Parameter im VLC-GUI eigeben

VLC bietet ein umfangreiches grafisches Menü, in dem man alle Gerätedateien und Einstellungsparameter eingeben kann. Im Menü "Medien > Aufnahmegerät öffnen" kann man die Video- und Audiogerätenamen eingeben (siehe Bild). Die Eingaben im Bild entsprechen dem VLC-Befehl für die Kommandozeile (oben).

Verschiebung der Tonspur korrigieren

Über den Menüpunkt "Extras > Spur-Synchronisierung" kann eine verzögerte Tonspur auf "lippensynchron" korrigiert werden. Erfahrungsgemäß ist eine Korrektur von -300 bis -500 ms notwendig.

OSS-Audio

Will man OSS-Audio verwenden, muss man im gleichen Dialog unten das Feld "Mehr Optionen anzeigen" auswählen und in der Zeile Optionen bearbeiten :input-slave=alsa durch :input-slave=oss ersetzen (siehe Bild).

Aufnehmen mit VLC

vlc-eingabe3.png Um ein Video mit VLC aufzunehmen, wählt man im Dialog "Aufnahmegerät öffnen" unten statt "Wiedergabe" - "Konvertieren/ Speichern" aus. Im nächsten Dialog gibt man den Namen der Zieldatei (des Videos) an und wählt ein Profil (das Dateiformat) aus. Es stehen viele Profile zur Auswahl, für die die Einstellungen für die Videoqualität (Bitrate etc.) über den Button vlc-profileinstellung.png noch individuell angepasst werden können.

Hinweis:

Bei einigen Profilen sind die Bitraten für den Video- und Audioencoder standardmäßig sehr niedrig angesetzt, durch Erhöhen kann man eine bessere Qualität der Aufnahme erreichen.

Weitere Betrachterprogramme

Folgende Programme werden hier nur erwähnt:

  • xawtv - Ein TV-Anzeigeprogramm, in den Funktionen vergleichbar mit tvtime, aber mit Aufnahmemöglichkeit.

  • Mtvcgui {en} (Mencoder TV Capture GUI) - ein Pythonprogramm für TV-Aufnahmen mit MEncoder.

ubuntuusers.local › WikiVideograbbing