VHS-Videos digitalisieren

Als Hardware kommt neben einem besseren Videorecorder (aktuell JVC HR-DD949) ein STK-1160-basierter Videograbber zum Einsatz. Da die Aufnahmen vom Videorecorder vor dem Transcoding als MPEG4-Videos noch geschnitten werden müssen, läuft der Digitalisierungsprozess in drei Schritten:

  1. Aufnahme in hoher Qualität in einem MPEG-PS-Stream.
  2. Schneiden des Streams
  3. Transcoding nach MPEG4

Aufnahme

Drei Herausforderungen sind hier zu bewältigen: Das Video soll in (fast) bestmöglicher Qualität aufgezeichnet werden, die Videogröße muß im Rahmen bleiben und (und das ist der problematischste Punkt) Audio und Video müssen absolut synchron aufgezeichnet werden. Nach vielen Versuchen hat sich gezeigt, dass diese Aufgabe ausschließlich von mencoder gelöst werden kann.
#!/bin/bash
DATE='date +"%Y-%m-%d+%H-%M-%S"'

captureopts="tv:// -tv device=/dev/video1:input=0:norm=PAL:width=720:height=576:buffersize=128:alsa:adevice=hw.3:forceaudio:buffersize=128"

audioopts="-oac mp3lame -lameopts abr:br=192:aq=1"

videoopts="-ovc lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:\
o=mpv_flags=+cbp_rd:o=mpv_flags=+mv0:vqmin=1:lmin=1:dc=10:threads=5:ildct:ilme -vf yadif"
outopts="-of mpeg -mpegopts format=dvd:tsaf"

mencoder $captureopts $audioopts $videoopts $outopts -o video-$DATE.mpg 2>/dev/null
Bei VHS-Videos ist eine durchschnittliche Bitrate von 5000kbps absolut ausreichend, und auch für den Audio-Stream sind 192kbit mp3 ideal. Das Wichtigste ist aber, dass bereits in diesem Schritt das Deinterlacing erfolgt, es hat sich gezeigt, dass Deinterlacing nach dem Schneiden zu problematisch ist. Es wird der "yadif"-Filter angewendet Mit der Option "threads=5" wird sichergestellt, dass trotz Encodings und deinterlacing ausreichend Prozessorleistung zur Verfügung steht und es mit Sicherheit zu keinen Framedrops kommt. "ildct" bedeutet, interlaced DCT zu verwenden, "ilme", interlated motion estimation anzuwenden.

Schneiden

Egal, ob mit avidemux, oder mit einem Shellscript:
ffmpeg -ss 0 -t 1686 -i video-2018-10-16+19-13-00.mpg -vcodec copy -acodec copy orf.mpg

Umwandeln nach mp4

Das Umwandeln nach mp4 ist zeit-unkritisch, man kann hier also alles an Filtern hereinpacken, was nötig ist, um die Bildqualität zu verbessern und die Größe des Ziel-Videos auf ein sinnvolles Maß einzudampfen.
videoopts="-c:v libx264 -preset slow -crf 18 -tune film"

filteropts="-vf smartblur=1.5:-0.75:-3.5:0.65:0.25:2.0,drawbox=y=ih-h:w=0:h=10:t=max,pad=width=1024:height=576:x=137:y=0:color=black"

ffmpeg -i "$FROM" -metadata title="$TITLE" $videoopts $audioopts $filteropts "$TO"
Im vorliegenden Fall wird die Größe des Bildes auf 1024x576-Pixel, also 16:9 umgewandelt, und zwar in dem links und rechts ein schwarzer Balken angefügt wird. Wenn das nicht passiert, wird das Bild vom TV gestreckt, was unvorteilhaft aussieht. Die "smartblur"-Option sorgt für ein Schärfen des Bildes, die "drawbox" dafür, dass die untersten 10 Zeilen, die nur das VHS-Kopfwechsel-Rauschen enthalten, geschwärzt werden. Das sieht nicht nur besser aus, sondern läßt das Bild auch besser komprimieren.

Umwandeln nach DVD

ffmpeg -ss 4 -t 1686 -i video-2018-10-20+14-59-07.mpg -vcodec copy -acodec copy -target pal-dvd -b:v 1800000 orf-dvd.mpg
In devede kann dann dieses MPEG-File direkt als "DVD-kompatibel" eingebunden werden.

Links