Videode ja rajalogide järeltöötlus

Allikas: Tipikate Rattamatkaklubi teabebaas
Jump to navigation Jump to search

Sissejuhatus

Käesolev artikkel käsitleb teemasid, kuidas filmitud materjali ja talletatud rajalogisid töödelda, nii et need oleksid erinevate PC peal kasutatavate tarkvarade jaoks "söödavad".

2018. aasta aprilli seisuga võib öelda, et mingit ühtset standardit, kuidas videofaili sisse GPS infot integreerida, ei ole. Iga tootja on leiutanud selleks oma viisi ning seetõttu on erinevate riist- ja tarkvarade ristkasutamine raskendatud. 2018. aasta aprilli seisuga saab siiski öelda, et viimase poole aasta jooksul on selles vallas kõvasti edasi arenenud exiftool nimeline tarkvara - tundub, et arendaja on võtnud (üheks) oma prioriteediks kõikvõimalike kaamerate formaadid toetatuks lisada.

Kuna on selgunud, et RegistratorViewer tarkvara toetab geoinfo seostamist viisil, kus igale videofailile vastab sama nimega GPX fail, siis lahendab exiftool nii mõnegi probleemi. 2018. aasta aprillis tehtud testid näitasid, et exiftool abil on võimalik GPX info exportida nii Prestigio 560GPS autokaamera videofailidest (.MOV) kui ka Harri poolt 2017. aastal metsaradade kaardistamisel kasutatud GoPro kaamera videofailidest (.MP4). Tasub mainida, et 2017. aastal tundus, et GoPro on oma GPS info väga ära peitnud või suisa ainult overlay kuvamiseks vajalikul viisil talletanud, nüüd aga on exiftool arendaja suutnud selle formaadi lahti mõistatada ja toetatuks lisada.

Garmini .fit failide töötlemine

Garmin talletab oma seadmetes (GPSid, kaamerad) rajalogid üldiselt .FIT formaadis. Muudes tarkvarades ei ole see aga nii levinud formaat kui GPX, seega tõusetub enamasti teema .FIT failide konverteerimise osas. Garmin BaseCamp, saab .FIT failidega ilusti hakkama, aga kui teisendusi on vaja palju teha, tuleb otsida skriptitavaid lahendusi.

GPSBabel põhimõtteliselt toetab .FIT formaati. Küll aga on see vähemalt mõnel juhul veidi problemaatiline. Näiteks Garmin Virb X kaamerast pärit FIT failidega on lugu järgmine:

  • 2018. aasta mais paigaldatakse Ubuntu apt-get install gpsbabel korral versioon 1.5.2. See annab aga nende .FIT failide sisendina kasutamisel vea ning teisendust ei toimu.
  • Uusim ametlik väljalase arendaja kodulehel on 1.5.4 ja see pärineb jaanuarist 2017. Selle versiooni abil on võimalik küll FIT failid GPX formaati teisendada, aga ajatemplid rikutakse ära - need on peale teisendust pärit 1989ndast aastast. Samamoodi käitub ka Jawava konverter.
  • Internetifoorumitest pärit info järgi parandati nimetatud probleem GPSBabel tarkvaras ära 2017. aasta suvel, aga kuna uut ametlikku väljalaset pole vahepeal tehtud, siis tuleb soovi korral GPSBabel ise uusimast algkoodist kompileerida. Juhend selleks asub siin.

Kui GPSBabel on paigaldatud, siis kõik samas kaustas olevad .FIT failid saab .GPX formaati teisendada näiteks nii:

EXTENSION="fit"

while IFS= read -r -d '' -u 9
do
    filename=$(basename "$REPLY" .$EXTENSION)
    gpsbabel -i garmin_fit -f "$filename".$EXTENSION -o gpx -F "$filename".gpx
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )

Ajatemplite trükkimine

See skript trükib välja GPX failis oleva rajalogi kõige esimese ja viimase ajatempli (Unix TimeStamp formaadis):

EXTENSION="gpx"

while IFS= read -r -d '' -u 9
do
    CSV=`gpsbabel -t -i gpx -f "$REPLY" -x nuketypes,waypoints,routes \
        -x track,start=2000 -o unicsv -F - | csvtool namedcol Date,Time -`

    DATESTRFIRST=`echo "$CSV" | awk 'NR==2' | tr ',' ' '`
    DATESTRLAST=`echo "$CSV" | tail -n 1 | tr ',' ' '`
    DATEFIRST=`date --utc --date="$DATESTRFIRST" +"%s"`
    DATELAST=`date --utc --date="$DATESTRLAST" +"%s"`
    echo $DATEFIRST $DATELAST
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )

Ja see skript trükib välja videofailis oleva välja Create Date ja video pikkuse sekundites:

EXTENSION="MP4"

while IFS= read -r -d '' -u 9
do
    CREATEDATE=`exiftool -S -s -d "%s" -createdate "$REPLY"`
    DURATION=`exiftool -S -s -n -trackduration "$REPLY"`
    echo $CREATEDATE $DURATION
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )

GPX failide ümber nimetamine video järgi

Seda skripti sai katsetatud Garmin Virb X kaamerast pärit ja GPX formaati teisendatud rajalogide automaatseks ümber nimetamiseks vastavalt videofailide nimedele. See skript ei ole 100% toimiv, sest teatud juhtudel oli .FIT faili nimi sekundi võrra varasem kui videofailis olev Create Date väli, samuti ei toimi see skript nendel juhtudel, kus .FIT faili talletamist alustati varem kui filmimist või kui filmimise jooksul kaamera videot tükeldab. Aga ehk on milleksi siiski abi. Enne selle skripti jooksutamist tuleb siis .FIT failid .GPX formaati teisendada.

EXTENSION="MP4"

while IFS= read -r -d '' -u 9
do
    FROMNAME=`exiftool -d "%Y-%m-%d-%H-%M-%S.gpx" -createdate -s -S "$REPLY"`
    filename=$(basename "$REPLY" .$EXTENSION)
    mv "$FROMNAME" "$filename".gpx
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )

Garmin kaamera rajalogi automaatne teisendus

See on hetkel siis kõige kaugemale arenenud skript, mille abil näiteks Garmin Virb X pärit rajalogid teha söödavaks registratorviewer-iga vaatamiseks. See ei ole siiski veel täiuslik! Skript võtab algselt kõik .FIT failid, filtreerib sealt välja ebavajaliku (huvipunktid, marsruudid, ilma ajatemplita rajapunktid), liidab kõik üheks failiks kokku ja ekspordib GPX formaati. Teise sammuna tükeldab skript GPX faili vastavalt video ajatemplitele, kasutades seejuures nii eest kui tagant 60-sekundilist ülekatet.

Selleks, et sünkroniseerimine erinevates olukordases paremini toimiks, tuleb kindlasti õppida täpsemalt tundma, kuidas registratorviewer ikkagi neid rajalogisid ja videot ajaliselt seostab, aga igati kasutatava lahenduse saab siit kätte küll. Skript arvestab kaustade struktuuriga, mis Virb X mälukaardile tekib:

#!/bin/bash

EXTENSION="MP4"

CURDIR=`pwd`
cd ../../GMetrix

ff=""
for f in *.fit
do 
    ff="$ff -f $f"
done
gpsbabel -i garmin_fit $ff -x nuketypes,waypoints,routes -x track,start=2000 -o gpx -F "$CURDIR/all.gpx"
cd $CURDIR

while IFS= read -r -d '' -u 9
do
    CREATEDATE=`exiftool -S -s -d "%s" -createdate "$REPLY"`
    DURATION=`exiftool -S -s -n -trackduration "$REPLY" | cut -d'.' -f1`
    STARTDATE=$(($CREATEDATE - 60))
    ENDDATE=$(($CREATEDATE + $DURATION + 60))
    STARTSTR=`date -u -d @"$STARTDATE" +"%Y%m%d%H%M%S"`
    ENDSTR=`date -u -d @"$ENDDATE" +"%Y%m%d%H%M%S"`
    gpsbabel -t -i gpx -f all.gpx -x track,pack,start=$STARTSTR,stop=$ENDSTR -o gpx -F "$(basename "$REPLY" .$EXTENSION)".gpx
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )

rm all.gpx

Muud tähelepanekud

  • On testitud, et kui MP4 videost luua näiteks HandBrake tarkvara abil vähendatud versioon, siis GPS logi seal ei säili.