Vor einiger Zeit hatte ich den Bedarf einige alte Videoerinnerungen, die noch auf Videokassetten schlummerten, zu digitalisieren. Vor Ewigkeiten hatte ich schon mal eine einzelne Kassette digitalisiert, wobei ich das einfach bei einem Dienstleister dafür machen ließ. Bei mehreren Kassetten wird das aber schnell teuer und ich achte ja, wie immer, auf Preis/Leistung. Außerdem macht so ein bisschen basteln ab und an ja auch Spaß.
Also habe ich mich ein wenig informiert, wie man das am einfachsten so macht. Auch einen Videorekorder (bzw. -Player) habe ich nicht, aber da konnte ich einen im Bekanntenkreis ausleihen.
Was erstmal nicht funktionierte
Was man so lesen konnte, ist ein günstiger USB-Analog-Video-Grabber mit einem Syntek STK1160 Chipsatz ein gutes und günstiges Ding dafür. Also habe ich mir so ein Ding besorgt, was auch erstmal gut aussah: Ich hatte zu dem Zeitpunkt noch keinen Videorekorder am Start, die einzige andere analoge Videoquelle, die ich noch so habe, war ein Raspberry Pi – klappte erstmal einwandfrei.
Geplant hatte ich zum Aufzeichnen OBS Studio zu verwenden. Eigtl. für Streamingzeug gedacht, ist es aber insgesamt einfach ein schickes Frontend für FFmpeg related Video-Ein-/Ausgabe – klappte mit dem Video- und Audiooutput des Raspberry Pis auch soweit wunderbar.
Die Enttäuschung kam dann aber auch gleich, als ich das mit dem Videorekorder ausprobieren wollte. Ich habe eine sehr, sehr lange Zeit herumprobiert, aber der Videoinput wollte einfach nicht klappen. Audio lief dagegen einwandfrei, aber das kann man ja theoretisch auch einfach über den Mikrofon-Eingang lösen. Nicht nur auf Windows mit OBS Studio wollte das nicht klappen, auch nicht auf Linux mit ein bisschen Kommandozeilenmagie dasselbe Problem. Ich weiß bis heute nicht an was es genau lag und hatte dann irgendwann auch keine Lust mehr, weiter zu suchen, denn:
Und wie es dann doch ganz einfach
Irgendwann fiel mir ein, dass ja auch meine beiden Sundtek MediaTV Pro III USB-TV-Tuner, die ich eigtl., wie schon mal aufgeschrieben, für den DVB-C Empfang unter Tvheadend benutze, einen analogen Eingang haben. Also auch hier ein wenig herumprobiert und es lief auf Anhieb. Dazu benutzte ich am Ende ein Debian Live System auf meinem ganz normalen Rechner, denn ein bisschen (Grafik-)Power ist dazu ja dann doch notwendig, also ein Raspberry Pi ist wohl eher ungeeignet.
Die Abhängigkeiten bzw. Tools, die ich nun dafür benutzen wollte und auch der Sundtek-Treiber waren schnell installiert:
sudo apt install mencoder mplayer cd /tmp && wget http://www.sundtek.de/media/sundtek_netinst.sh && chmod 755 sundtek_netinst.sh && sudo ./sundtek_netinst.sh
Die Aufzeichnung klappt dann mit MEncoder direkt mit folgenden Parametern (statt mencoder
kann man auch mit denselben Parametern mplayer
starten, um eine Live-Preview zu erhalten:
mencoder -tv driver=v4l2:input=1:width=720:height=576:device=/dev/video3:fps=25:norm=PAL-BG:normid=0:adevice=/dev/dsp0:amode=1:audiorate=44100 -af format=s16le tv:// -oac pcm -ovc x264 -ofps 25 -o /media/user/DA12CB1C12CAFD0F/vhs.mkv
/media/user/DA12CB1C12CAFD0F
ist der Ausgabepfad und war in meinem Fall eine externe Festplatte, das Video- (/dev/video3
in meinem Fall) und Audiodevice (/dev/dsp0
oben) erhält man mittels /opt/bin/mediaclient -e
.
Das Ganze erzeugt dann ein H.264/MPEG-4 enkodiertes Video, der Audiostream wird „Raw“ aufgezeichnet (PCM) – das war nach ein wenig ausprobieren der beste Kompromiss aus Qualität und Augabedateigröße.
Die Nachbearbeitung
Zuerst wollte ich dann noch den Audiocodec ändern, AAC nimmt man da ja so für MPEG-4.
Nächstes Problem war dann noch, dass der Ton ein wenig asynchron zum Bild war, in meinem konkreten Fall startete die Tonspur 15,5 Sekunden zu früh. Außerdem bestand die Videokasette aus mehreren einzelnen Filmen – alles, also Audio 15,5 Sekunden früher, „aus der Mitte“ ein Stück herausschneiden und den Audiostream neu enkodieren klappt mit FFmpeg aber ja ganz einfach in einem Rutsch:
ffmpeg -i "D:\Temp\vhs.mkv" -itsoffset -15.5 -i "D:\Temp\vhs.mkv" -ss 00:35:44 -to 01:37:49 -map 1:v -map 0:a -codec:a aac -codec:v copy "D:\vhs_final1.mp4"