Sissejuhatus videokaardistamisse
Sissejuhatus
Tipikate Rattamatka korraldamise hulka kuuluvad eelretked matka piirkonda, mida viimastel aastatel on iga matka korraldamisel tehtud 7-10 päeva jagu. Et eelretkedel kogutud info võimalikult efektiivselt tallele panna, siis on omal kohal ka videokaardistamine, st videopildi ja GPS logi talletamine üheskoos. Selline lahendus võimaldab läbi käidud teid ja radu hiljem arvutis sarnaselt Google Street View'le vaadata.
Tipikate Rattamatkaklubi jaoks sai teema alguse 2016. aastal, mil hankisime autokaamera Prestigio 560GPS. 2017. aastal kasutasime lisaks sellele metsaradade kaardistamiseks GoPro Hero 5 Black seikluskaamerat ning 2018. aastal testisime erinevaid Garmin seikluskaameraid.
Kaamerad ja nutirakendused
Esimene suurem samm videokaardistamise teel on looduses filmimine. Üldiselt võib öelda, et sellist laia tarbe kaamerat või nutirakendust, mis oleks otseselt mõeldud videokaardistamiseks, pole olemas. Seega nõuab kaamera või rakenduse valik suuremat eeltööd, läbi testimist ja tõenäoliselt ka andmete järeltöötlust.
Konkreetselt kaamerate ja nutirakenduste osas annab ülevaate see leht.
Video ja kaardi vaatamine
Tundub, et kõige olulisem ja keerukam teema, mis videokaardistamist puudutab, on PC poolne tarkvara. Erinevaid lahendusi videopildi ja GPS info kaardil kuvamise jaoks on, aga igaühel neist on omad probleemid. Täpsemalt lahkab neid teemasid see leht.
Andmete konverteerimine
Sissejuhatus
Käesolev peatükk 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.
Kasutatavad utiliidid
Sissejuhatus
Käesolevas peatükis on toodud ära käsurea utiliiditide paigaldamine, mida allpool olevad skriptid kasutavad. Kõik katsed on tehtud Ubuntu 16.04 peal.
ExifTool
GPSBabel
GPSBabel paigaldamine on ära toodud eraldi artiklis.
Muud utiliidid
sudo apt-get install ffmpeg sudo apt-get install csvtool
Rajalogide eksport videofailist
Toome ära skripti, mis ekspordib kõigist samas kaustas olevatest videofailidest rajalogid ning talletab need GPX formaadis. Igale videofailile vastab seejuures GPX fail, mille nimi (laiendit arvestamata) on sama, mis algsel videofailil.
EXTENSION="MP4"
while IFS= read -r -d '' -u 9
do
GPXNAME=$(basename "$REPLY" .$EXTENSION).gpx
exiftool -p /usr/local/share/exiftool/gpx.fmt -ee "$REPLY" > "_tmp_$GPXNAME"
gpsbabel -t -i gpx -f "_tmp_$GPXNAME" -x nuketypes,waypoints,routes -x track,start=2000 -o gpx -F "$GPXNAME"
rm "_tmp_$GPXNAME"
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )
Tasub mainida, et mõnel juhul on exiftool väljundiks GPX fail, kus lisaks vajalikule infole on lisaks veel mõni üksik huvipunkt (näiteks umbmäärane video alguskoht) või ilma ajatemplita rajapunkt. Kuna meie jaoks on see pigem läbu, siis eemaldame selle GPSBabel utiliidi abil. Esimene "-x" filter eemaldab huvipunktid ja marsruudid, jättes alles ainult rajalogi. Teine "-x" filter eemaldab kõik rajalogi punktid, mille ajatempel on varajasem kui aasta 2000, eemaldades seejuures ka ilma ajatemplita rajapunktid.
Rajalogide eemaldamine videofailist
Nagu ülal kirjeldatud, siis eelistab RegistratorViewer kasutada videosse integreeritud rajalogi, kui see on olemas. Kui on soov kasutada just eraldi rajalogi (et saada effekt suuremahuliste retkede kuvamisel), siis tuleb rajalogi algsest videofailist eemaldada. Selleks sobib ffmpeg nimeline tarkvara.
Kõigilt samas kaustas olevatelt MOV failidelt eemaldab GPS info näiteks järgmine skript:
EXTENSION="MOV"
mkdir -p out
while IFS= read -r -d '' -u 9
do
ffmpeg -i "$REPLY" -metadata location="" -metadata location-eng="" -acodec copy -vcodec copy "out/$REPLY"
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )
Algsed videofailid jäävad puutumatuks, väljund talletatakse alamkausta out. Failide nimed jäävad samaks.
Ülal skriptis toodud ffmpeg rakendusele ette antud parameetrid on seni täpsemalt lahti mõtestamata, see näide on pärit internetifoorumist. Seal soovitati kontrolliks kasutada ka ffprobe nimelist utiliiti, kuid meie katse näitas, et ffprobe väljund enne ja pärast rajalogi eemaldamist oli sama. Siiski õnnestus ülaltoodud skriptiga autokaamera Prestigio GPS560 MOV failidest asukohainfo eemaldada, nii et RegistratorViewer kasutas eraldi GPX faile ning toimis tänu sellele palju-palju kiiremini.
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.