Großer Besuch, Frame-Exif

Großer Besuch wieder zum zweiten Weihnachtsfeiertag. Ich war aufgrund wenig Schlaf extrem müde. Es gab ein tolles Mittagsessen mit Gans. Ich knipste mich langsam warm und nahm beim zweiten Schwung auch wieder die Pocket.

Richtig Lust auf Bilder hatte ich nicht. Das Video zu Weihnachten ist immer noch das Beste. Es konnte wohl den anderen Eltern wegen der 4K Auflösung nicht gezeigt werden. Ich machte somit schnell eine neue Version lokal mit den Originaldaten auf 1080p. Der TV nimmt kein MOV – also transcoding auf MP4:
ffmpeg -i Weihnachten\ 2018\ 1080p60.mov -vcodec copy -acodec copy Weihnachten_2018-1080p60.mp4

Ich knipste ein Gruppenbild, zweimal. Es fehlte heute etwas meine Lust, Sachen zu arrangieren. Das Kaffeetrinken war auch gut. Dann gegen 17:00 war die Bude wieder leer. Etwas ratlos heute. Die Kinder werden größer.

Abends dann knapp 100 Zeilen PHP Code, etwas wirr aber geht. Dazu hatte ich mehr Lust, weil’s auch gelöst werden muss, wenn ich mehr Videos als Photogrundlage nehmen will.

Der Flow:
1. alle Files werden in ein glob geladen, dann daraus die Filme per regex gefiltert.
2. Pro Film die fps erkennen und mit dem Filmnamen dann alle Files, die mit „F1234“ eine Framenummer haben filtern.
3. Diese Bilder mit Framenummer werden schließlich mit dem „-DateTimeOriginal=“ und exiftool mit den richtigen Exifdaten versorgt (frames / fps).
4. zu guter Letzt wird der Dateiname auch noch entsprechend dem Standard YYYY-MM-DD_HH-MM-SS geändert, damit alle Bilder des Tages per Name sortiert werden können.

Ich griff sogar noch die YYYY/MM/DD im argv ab, müsste das auf die normale Photodir umleiten oder eben in der CWD ausführen. Es gäbe viel zu testen und das Ganze ist auch etwas wackelig. Für meinen Spezialfall und die bestehende Photo-Organisation will ich aber nicht zu viel weitere Zeit investieren, wenn das Ding eben geht. PHP ist schon besser als bash zu handhaben. Kurz vor 1 machte ich mal Schluss und war recht zufrieden. Vielleicht baue ich das Ganze Bilder-Neuskalieren auch gleich mit PHP, weil es eben irgendwie besser als Shell und schneller als Python geht. Der Code sieht komisch aus, doch das Resultat funktioniert.


#!/usr/bin/php
setTimestamp($btime);
$date->add(new DateInterval("PT" . $delta . "S")); // get the UNIX btime file creation time
$result = $date->format('Y-m-d_H-i-s');
echo "Result: " . $result . "\n";
shell_exec('exiftool -overwrite_original -DateTimeOriginal="' . $result . '" "' . $jpg. '"'); # use exiftool to set the EXIF-date
preg_match("/^(?:\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}_)?(.*?F[0-9]?.*\.jp.*)/i" , $jpg_filename , $clean_filename);
$new_filename = preg_replace('/\s+/', '_', $clean_filename[1]);
$new_filename = dirname($jpg) . "/" . $result . "_" . $new_filename;
echo "Clean:" . $new_filename . "\n";
rename_file($jpg, $new_filename);
}
}
}
}

# Getting the creation time of the file on the Mac
# https://stackoverflow.com/questions/6176140/how-do-i-get-actual-creation-time-for-a-file-in-php-on-a-mac
function get_file_creationdate($filename)
{
$stat = stat($filename);
date_default_timezone_set('Europe/Berlin');

if ($handle = popen('stat -f %B ' . escapeshellarg($filename), 'r')) {
$btime = trim(fread($handle, 100));
echo strftime("btime: %Y-%m-%d_%H-%M-%S\n", $btime);
pclose($handle);
}
### We now have the UNIX timestamp for the file creation date (btime)
return $btime;
}

#http://php.net/manual/de/function.basename.php
function mb_basename($path) {
if (preg_match('@^.*[\\\\/]([^\\\\/]+)$@s', $path, $matches)) {
return $matches[1];
} else if (preg_match('@^([^\\\\/]+)$@s', $path, $matches)) {
return $matches[1];
}
return '';
};

function rename_file($old_name, $new_name)
{
if(file_exists($new_name))
{
echo "Error While Renaming $old_name" ;
}
else
{
if(rename( $old_name, $new_name))
{
echo "Successfully Renamed $old_name to $new_name" ;
}
else
{
echo "A File With The Same Name Already Exists" ;
}
}
};
?>

In der Nacht noch Chats mit Helsinki. Jetzt soll eine Party in Island steigen? Hmm?! Ich konnte dann nicht einschlafen – bis 6 oder sogar 7 lag ich wach. Krass.

0 Responses to “Großer Besuch, Frame-Exif”


Kommentare sind zur Zeit nicht möglich.
2018-12-26_12-20-28_DSC_8558.jpg
2018-12-26_12-20-28_DSC_8558.jpg
2018-12-26_12-23-22_DSC_8566.jpg
2018-12-26_12-23-22_DSC_8566.jpg
2018-12-26_12-26-31_DSC_8571.jpg
2018-12-26_12-26-31_DSC_8571.jpg
2018-12-26_13-31-25_DSC_8588.jpg
2018-12-26_13-31-25_DSC_8588.jpg
2018-12-26_13-31-48_DSC_8589.jpg
2018-12-26_13-31-48_DSC_8589.jpg
2018-12-26_13-50-13_DSC_8595.jpg
2018-12-26_13-50-13_DSC_8595.jpg
2018-12-26_13-52-08_DSC_8601.jpg
2018-12-26_13-52-08_DSC_8601.jpg
2018-12-26_15-48-21_DSC_8687.jpg
2018-12-26_15-48-21_DSC_8687.jpg
2018-12-26_15-48-32_DSC_8689.jpg
2018-12-26_15-48-32_DSC_8689.jpg
2018-12-26_15-52-44_DSC_8698.jpg
2018-12-26_15-52-44_DSC_8698.jpg