CamOnRoad: erinevus redaktsioonide vahel
| 19. rida: | 19. rida: | ||
Käesolev peatükk eeldab, et paralleelselt videoga talletati eraldi nutirakenduse (nt [[OruxMaps]]) või GPS seadmega ka rajalogi, see katab ära kogu filmitud aja (võib katta ka rohkem) ning seal olevad ajatemplid on talletunud ja korrektsed. | Käesolev peatükk eeldab, et paralleelselt videoga talletati eraldi nutirakenduse (nt [[OruxMaps]]) või GPS seadmega ka rajalogi, see katab ära kogu filmitud aja (võib katta ka rohkem) ning seal olevad ajatemplid on talletunud ja korrektsed. | ||
Allpool on rajalogi töötlemiseks kasutatud GPSBabel nimelist utiliiti, mille kohta võib rohkem lugeda [[ | Allpool on rajalogi töötlemiseks kasutatud GPSBabel nimelist utiliiti, mille kohta võib rohkem lugeda [[GPSBabel|siit]]. Kuigi GPSBabel ise on olemas nii Windowsile kui Linuxile, siis allpool toodud skript on tehtud ja proovitud Ubuntu peal. | ||
Kui kasutajal on olemas GPX fail, kus on kaetud kogu filmitud periood, siis tuleks sellele esmalt väike eeltöötlus teha. Selleks tuleb anda järgmine käsk: | Kui kasutajal on olemas GPX fail, kus on kaetud kogu filmitud periood, siis tuleks sellele esmalt väike eeltöötlus teha. Selleks tuleb anda järgmine käsk: | ||
Redaktsioon: 26. mai 2018, kell 16:19
Sissejuhatus
Tegemist on Android rakendusega, mis peaks imiteerima autokaamera funktsionaalsust nutitelefonil. Konkreetsemalt sai seda rakendust proovitud 2016. aasta Tipikate Rattamatka korraldusel, kus osad läbi jalutatud metsarajad sellega üles filmitud said. Ja kuigi esialgu tunnetuslikult tundus, et rakendus võiks talletada ka GPS info, siis reaalselt seda seost leida pole suutnud. Ka katse 2018. aasta mais exiftool nimelise utiliidiga andis tulemuseks tühjad GPX failid.
Rakendus talletab videfailid MP4 kujul, mingit eraldi rajalogi kuskilt välja ei paista.
Andmete järeltöötlus
Sissejuhatus
Selleks, et videokaardistamise tarbeks talletatud materjali oleks võimalik normaalselt kasutada, on vajalik videofailide ja GPS logi omavaheline seostamine. Nagu ülal juba öeldud, siis otseselt selle rakenduse poolt ei tundunud rajalogi talletuvat. Kuna videoga paralleelselt sai 2016. aastal talletatud siiski ka OruxMaps rakendusega rajalogi, siis sai 2018. aasta mais tehtud katse neid kokku siduda.
Kokku sidumisel on siinkohal aga oluliseks asjaoluks see, kui täpselt on võimalik videofailidest hiljem ajatemplid kätte saada - ehk siis saada aru, mis hetkel täpselt video algas või lõppes. Et vältida üleliigset käsitööd, siis on eelistatud kindlasti skriptitav lahendus.
Selgus, et:
- Video alguse ajatempel talletatakse failinimesse, arvestades ajavööndi aega. Faili nimi on kujul VID_DD.MM.YYYY_HH_MM_SS.mp4.
- Faili sisse Create Date väljale kirjutatakse video lõpu aeg. Tundub, et see võib olla ka veel aeg kuni paar sekundit peale video lõppu. Lisaks kirjutatakse see aeg UTC ajana, kuid seda tõlgendatakse vööndiajana.
Eelnevast lähtudes tasub nende videode puhul lugeda ajatempel pigem faili nimest.
Rajalogi töötlemine
Käesolev peatükk eeldab, et paralleelselt videoga talletati eraldi nutirakenduse (nt OruxMaps) või GPS seadmega ka rajalogi, see katab ära kogu filmitud aja (võib katta ka rohkem) ning seal olevad ajatemplid on talletunud ja korrektsed.
Allpool on rajalogi töötlemiseks kasutatud GPSBabel nimelist utiliiti, mille kohta võib rohkem lugeda siit. Kuigi GPSBabel ise on olemas nii Windowsile kui Linuxile, siis allpool toodud skript on tehtud ja proovitud Ubuntu peal.
Kui kasutajal on olemas GPX fail, kus on kaetud kogu filmitud periood, siis tuleks sellele esmalt väike eeltöötlus teha. Selleks tuleb anda järgmine käsk:
gpsbabel -t -i gpx -f all.gpx -x nuketypes,waypoints,routes -x track,pack,start=2000 -x interpolate,time=1 -o gpx -F all_interpolated.gpx
See teeb järgmist:
- Sisend võetakse failist all.gpx ja väljund kirjutatakse faili all_interpolated.gpx.
- Käsk viskab välja huvipunktid ja marsruudid, jättes alles ainult rajalogi.
- Ühendab kõik rajasegmendid üheks segmendiks kokku. Eeldus on, et kattuvaid ajatempleid ei ole ning ajatemplid jooksevad alati suurenevas järjekorras. Kui see nii ei ole, võib pack asemel kasutada merge, kuid probleemide vältimiseks tasub sel juhul ka manuaalselt uurida, miks rajalogis korduvaid või ebakorrapäraseid punkte üldse leidub.
- Viskab välja rajapunktid, mille ajatempel on varasem kui aasta 2000. Selle punkti suurem mõte on visata välja ilma ajatemplita rajapunktid.
- Interpoleerib rajapunkte juurde, nii et kogu ajavahemik oleks 1-sekundise intervalliga kaetud.
Nüüd saab rajalogi tükeldada vastavalt videofailidele:
#!/bin/bash
EXTENSION="mp4"
while IFS= read -r -d '' -u 9
do
DATESTR=(${REPLY//[._]/ })
CREATEDATE=`date --date="${DATESTR[3]}-${DATESTR[2]}-${DATESTR[1]} ${DATESTR[4]}:${DATESTR[5]}:${DATESTR[6]}" +"%s"`
DURATION=`exiftool -S -s -n -trackduration "$REPLY" | cut -d'.' -f1`
STARTDATE=$(($CREATEDATE))
ENDDATE=$(($CREATEDATE + $DURATION + 1))
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_interpolated.gpx -x track,start=$STARTSTR,stop=$ENDSTR -o gpx -F "$(basename "$REPLY" .$EXTENSION)".gpx
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )
Video töötlemine
2016. aastal said videod talletatud portrait režiimis, mis pole kindlasti kõige sobivam valik. Selgus, et füüsiliselt talletatakse pilt ikkagi landscape režiimis, lihtsalt EXIF infosse lisatakse Rotation=90. Tulemuseks on see, et osad meediapleierid näitavad videot õigesti, osad mitte. VLC Player näitab õigesti, RegistratorViewer aga pööratult. Kõige lihtsam viis video ümber kodeerimiseks on ffmpeg, mille uuemad (2015+) versioonid teevad pildi automaatset pööramist lausa vaikimisi. Ehk siis pilt kodeeritakse ringi vastavalt EXIF info rotation väljale ning rotation väli ise keeratakse nulli. Kõik kaustas olevad MP4 videod keerab õigeks järgmine skript:
#!/bin/bash
EXTENSION="mp4"
mkdir -f out
while IFS= read -r -d '' -u 9
do
ffmpeg -i "$REPLY" -c:a copy "out/$REPLY"
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )
Tundub, et see pole RegistratorViewer-i jaoks küll hädavajalik, aga videofailide sees olevad ajatemplid saab korda seada järgmise skriptiga:
#!/bin/bash
EXTENSION="mp4"
while IFS= read -r -d '' -u 9
do
DATESTR=(${REPLY//[._]/ })
DATESTR2="${DATESTR[3]}:${DATESTR[2]}:${DATESTR[1]} ${DATESTR[4]}:${DATESTR[5]}:${DATESTR[6]}"
exiftool "-CreateDate=$DATESTR2" $REPLY
done 9< <( find . -type f -iname "*.$EXTENSION" -print0 )
Nagu ülal öeldud, siis vaikimisi olid CamOnRoad poolt tehtud failides nendel väljadel video lõpu ajad (või isegi sekund-paar peale video lõppu) ning lisaks nullis video pööramine need päris ära.