Einleitung

Warum 8mm Filme digitalisieren - und das ganze noch im Selbstbau? Ganz einfach weil die Filme da sind und man sie doch gerne mal sehen möchte. Und das Basteln macht Spass. Inzwischen habe ich alle meine alten, geerbten Filme digitalisiert mit der hier beschriebenen Maschine. Sie hat einen bis zwei Filme pro Tag geschafft. Langsam? naja macht ja nix, denn es geht alles quasi automatisch - man nur muss den Film von Hand einlegen, abschätzen, wieviel Bilder der Film hat (siehe unten), Programm starten und irgendwann schauen, ob der Film fertig ist.

LIESMICH

Dies ist eine Beschreibung meiner Lösung... wer etwas daraus für seine eigenen Zwecke verwendet, kann dies gerne machen - auf eigene Gefahr hin! Insbesondere mein Schaltungvorschlag, denn der geht ohne galvanische Trennung in den Parallelport rein - eigentlich kein Problem, aber ich weise hier extra nochmal darauf hin.

Wenn Ihr etwas von mir weiterverwendet, dann könnt ihr ja einen kleinen Hinweis auf mich geben :o)

Viele Grüße,
Chris

Los geht's

Umzug... Aufräumen... Keller... Kiste... viele Filme...!

Was jetzt damit? Projektor? Wo? Da! Stöpsel! Einschalt! Surr, mehr nicht?!

Also erst mal alles mit umziehen und dann sehen wir weiter. Der Umzug ist jetzt über sieben Jahre her und für dieses Jahr (2008) habe ich mir vorgenommen, die Filme wieder 'sichtbar' zu machen (und dabei auch zu digitalisieren).

Die grundsätzlichen Idee zum folgenden Digitalisiergerät kam aus dem Wettbewerb 'Mach flott den Schrott' der Zeitschrift C'T. Ein Gewinner dieses Wettbewerbs hat aus einem alten Projektor für 8mm Filme einen Digitalisierer gebaut.

Ausgangssituation

Überlegungen

Umsetzung

Bei der Untersuchung des Projektors zeigte sich, dass es eigentlich nur eine Achse gibt, um die sich alles, wortwörtlich, dreht. Also erst mal die gesamte 'Elektrik' und Zubehör raus. Dadurch wurde das ganze schon sehr viel übersichtlicher. Übrig ist nun die gesamte Filmtransportmechanik, mehr nicht.

Bild-für-Bild

Wie kann ich nun feststellen, wann ein neues Bild da ist?

Eine Umdrehung des Hauptachse ist genau ein Bild vorwärts. Also muss man nur diese Umdrehung feststellen. Wie? Gabellichtschranke am 'Schutter'. Dabei habe ich 2 der drei Blenden entfernt, sind ja für den Projektor nicht mehr notwendig.

Der neue Antrieb

Das war schon etwas schwieriger. Zuvor gab es einen Bandantrieb, mit Motor der das ganze so schnell bewegte, dass 16 Bilder pro Sekunde durchlaufen. Für einen Bild-für-Bild Vortrieb ist das nicht geeignet.

Ich habe dann die gesamte Achse rausgenommen (die gesamte Achse inkl. der Halterung) und das Antriebsrad durch eine Zahnscheibe ersetzt.

Nun noch einen Getriebemotor (60 U/min) dazu, der die notwendige Kraft hat um die Achse zu drehen. Fertig!

Fotoaparat und Optik

Der komplizierteste Teil.....! Nach viel, viel Rumprobieren kam das folgende vorläufige Endergebnis raus:

Praktischer weise ist am Projektor eine Halterung für Vorsatzgeräte an die ich den ganzen Aparillo anbringen konnte.

Vor/Nachteile der Webcam-Lösung

Vorteile

Nachteile

 

In Summe ist das Ergebnis jedoch akzeptabel.
 

Die Steuerung

Der Mini-Schaltplan

Der erste Versuch ging nach einiger Zeit in die Brüche, da ich den Motor mittels eines Relais geschaltet habe. Man kann sich ausrechnen, wie lange es funktioniert hat, bei einer durchschnittlichen Lebensdauer eines Relais von 100000 Schaltvorgängen... Die Relaislösung hatte den Vorteil (und getriebetechnischen Nachteil), dass der Motor abrupt losgelaufen und gestoppt ist (durch kurzschließen der Kontakte).

Danach habe ich auf das abrupte verzichtet, und einfach einen Transistor aus der Bastelkiste genommen. Der Motor ist jetzt langsam angefahren und hat auch langsam gestoppt, daher musste ich die Lichtschranke nach vorne versetzen. Jedoch war das ganze jetzt viel leiser - und schneller, da das Foto bereits gemacht wurde, während der Motor noch ausläuft.

Das Steuerprogramm: getmovie.pl (beta-version)

Ursprünglich sollten ja 2 Lichtschranken alles Steuern. Nachdem das mit dem Filmende aktuell nicht funktioniert, habe ich einfach einen Zähler eingebaut und diesen für das Filmende verwendet.

Usage: getmovie.pl <filmname> <startcounter> <endcounter>

  1. filmname: Dieser Wert gibt den abschließenden Filmnamen an. Endresultat ist <filmname>.avi. Des weiteren ist dieser wert der Präfix für die Einzelbilder: <filmname>_nnnnnnn.jpg
  2. startcounter: Dies ist der wert, für die Bildnummer, bei der gestartet wird. Normalerweise 0, wenn man jedoch in der Mitte einer Digitalisierung abbricht kann hier der aktuelle Startwert eingetragen werden.
  3. endcounter: ist das Bild mit dieser Nummer erzeugt, so wird der Digitalisierungsprozess beendet und der Film wird aus den im aktuellen Verzeichnis abgelegten Bildern erzeugt.
#!/usr/bin/perl
use Device::ParallelPort;
$SIG{'TERM'}=\&ende;
$SIG{'QUIT'}=\&ende;
$SIG{'INT'}=\&ende;

if($#ARGV!=2) { print "Usage: getmovie.pl fileprefix startnum endnum\n"; exit(1); }
my $prefix=$ARGV[0];
my $num=$ARGV[1];
my $end=$ARGV[2];
my $port = Device::ParallelPort->new('parport:0');
my $b12o = $port->get_bit(12); # bild liegt an
my $b13o = $port->get_bit(12); # filmprint "$prefix\n";
$port->set_byte(0,chr(255));
while ($num<=$end) { 
#while ($port->get_bit(13)!=1) { 
 $b12a=$port->get_bit(12);
 if($b12o - $b12a > 0) {
 $port->set_byte(0,chr(0)); #bit noch finden!!
 $cmd = sprintf("v4lctl -c /dev/video0 snap jpeg 800x600 %s_%07d.jpg",$prefix,$num);
 print $cmd."\n";
 system("$cmd");
 $num+=1;
 $port->set_byte(0,chr(255)); # hier noch das eigentliche bit rausfinden!!
 }
 $b12o = $b12a;
};
# motor aus
$port->set_byte(0,chr(0)); # hier noch das eigentliche bit rausfinden!!
# in film convertieren
# klein, schlechtere qualitaet 10min ca. 70MByte
#$cmd="mencoder mf://*.jpg -mf w=800:h=600:fps=16:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o $prefix.avi -of avi";
# gross, gute qualitaet 10min ca. MByte
$cmd="mencoder mf://*.jpg -mf w=800:h=600:fps=16:type=jpg -ovc lavc -lavcopts vcodec=mjpeg -oac copy -o $prefix.avi -of avi";
print $cmd."\n";
system("$cmd");
exit(0);
sub ende {
 $port->set_byte(0,chr(0)); # hier noch das eigentliche bit rausfinden!!
 exit(0);
}

Bildanzahl 16fps:

Filmlänge Anzahl Bilder
2,5 min 7,5m halbe Rolle 2400
5 min 15m ganze Rolle 4800
15 min 45m - 14400

Zusatzprogramm 1: motor.pl (beta-version)

Das kleine Programm schaltet einfach den Motor an (max. 2 Minuten)- und bei <ctrl>C wieder aus.

Usage: motor.pl

#!/usr/bin/perl
use Device::ParallelPort;
$SIG{'TERM'}=\&ende;
$SIG{'QUIT'}=\&ende;
$SIG{'INT'}=\&ende;

my $port = Device::ParallelPort->new('parport:0'); $port->set_byte(0,chr(255)); sleep(100); ende(); exit(0); sub ende { $port->set_byte(0,chr(0)); exit(0); }

Zusatzprogramm 2: 1BildVorDisplay.pl (beta-version)

Das kleine Programm spult ein Bild vor, nimmt einen snapshot und zeigt das Bild an.

Usage: 1bildVorDisplay.pl

erzeugt im aktuellen Verzeichnis eine Datei test.jpg (diese wird nicht wieder gelöscht).



#!/usr/bin/perl
use Device::ParallelPort; $SIG{'TERM'}=\&ende; $SIG{'QUIT'}=\&ende; $SIG{'INT'}=\&ende; my $port = Device::ParallelPort->new('parport:0'); my $b12o = $port->get_bit(12); # bild liegt an my $b13o = $port->get_bit(12); # film $port->set_byte(0,chr(255)); while (1==1) { $b12a=$port->get_bit(12); if($b12o - $b12a > 0) { $port->set_byte(0,chr(0)); #bit noch finden!! $cmd = "v4lctl -c /dev/video0 snap jpeg 800x600 test.jpg"; print $cmd."\n";
system("$cmd");
$cmd="display test.jpg";
system("$cmd"); exit(0); } $b12o = $b12a; };sub ende { $port->set_byte(0,chr(0)); # hier noch das eigentliche bit rausfinden!! exit(0) }

Das Endergebnis: