Videode ja rajalogide järeltöötlus: erinevus redaktsioonide vahel
Uus lehekülg: 'Category:Videokaardistamine' |
Resümee puudub |
||
| 1. rida: | 1. rida: | ||
== 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. | |||
=== 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. | |||
<pre> | |||
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 ) | |||
</pre> | |||
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. | |||
== 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 [[GPSBabel#Ise_kompileerimine|siin]]. | |||
Kui GPSBabel on paigaldatud, siis kõik samas kaustas olevad .FIT failid saab .GPX formaati teisendada näiteks nii: | |||
<pre> | |||
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 ) | |||
</pre> | |||
=== Ajatemplite trükkimine === | |||
See skript trükib välja GPX failis oleva rajalogi kõige esimese ja viimase ajatempli (Unix TimeStamp formaadis): | |||
<pre> | |||
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 ) | |||
</pre> | |||
Ja see skript trükib välja videofailis oleva välja ''Create Date'' ja video pikkuse sekundites: | |||
<pre> | |||
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 ) | |||
</pre> | |||
== 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. | |||
<pre> | |||
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 ) | |||
</pre> | |||
== 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: | |||
<pre> | |||
#!/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 | |||
</pre> | |||
== 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. | |||
[[Category:Videokaardistamine]] | [[Category:Videokaardistamine]] | ||
Redaktsioon: 27. mai 2018, kell 01:07
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.
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.
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.