Use timestamp from image EXIF

This commit is contained in:
Magnus Åhall 2024-10-10 21:22:04 +02:00
parent e441b4880f
commit ede8a4cd48

17
main.go
View File

@ -136,14 +136,22 @@ func filesToSequenceFile(fname string, files []string) { // {{{
} }
} }
} // }}} } // }}}
func updateEXIFTimestamp(files []string) { // {{{
for _, f := range files {
t := filenameToTime(f, true)
fmt.Printf("exif for %s\n", f)
exiftool := exec.Command("exiftool", "-CreateDate="+t.Format("2006-01-02 15:04"), "-overwrite_original", f)
exiftool.Run()
}
} // }}}
func timelapse(date string, files []string) { // {{{ func timelapse(date string, files []string) { // {{{
sequenceFile := fmt.Sprintf("/tmp/timelapse/sequence_%s", date) sequenceFile := fmt.Sprintf("/tmp/timelapse/sequence_%s", date)
videoFile := fmt.Sprintf("/tmp/timelapse/video_%s.mp4", date) videoFile := fmt.Sprintf("/tmp/timelapse/video_%s.mp4", date)
text := fmt.Sprintf("drawtext=text='%s':fontsize=30:x=10:y=10:fontcolor=#71b045:bordercolor=black:borderw=1", date) text := `drawtext=text='%{metadata\:DateTimeDigitized}':fontsize=30:x=10:y=10:fontcolor=#71b045:bordercolor=black:borderw=1`
filesToSequenceFile(sequenceFile, files) filesToSequenceFile(sequenceFile, files)
os.Remove(videoFile) os.Remove(videoFile)
ffmpeg := exec.Command("ffmpeg", "-safe", "0", "-f", "concat", "-i", sequenceFile, "-filter_complex", text, "-framerate", framerate, "-c:v", "libx264", "-crf", "23", videoFile) ffmpeg := exec.Command("ffmpeg", "-r", framerate, "-safe", "0", "-f", "concat", "-i", sequenceFile, "-filter_complex", text, "-c:v", "libx264", "-crf", "23", videoFile)
out, err := ffmpeg.CombinedOutput() out, err := ffmpeg.CombinedOutput()
if err != nil { if err != nil {
fmt.Printf("%s\n", out) fmt.Printf("%s\n", out)
@ -180,6 +188,11 @@ func main() {
for date, files := range *sortedDays { for date, files := range *sortedDays {
fmt.Printf("Create timelapse for %s\n", date) fmt.Printf("Create timelapse for %s\n", date)
dates = append(dates, date) dates = append(dates, date)
// This is now done when downloading the image from the camera,
// since it takes too damn long time when running this program.
// It is preserved for the times when the source images are missing
// the EXIF data.
// updateEXIFTimestamp(files)
timelapse(date, files) timelapse(date, files)
} }