Extract GPS-data from *.mov files (Denver ACG-8050W GPS)

Started by SZ, December 11, 2019, 08:26:22 AM

Previous topic - Next topic

SZ

Hello.

I've got several videos (*.mov) from a Denver ACG-8050W GPS Camera. I tried to save the GPS-data in a GPX-file, but it doesn't work.

My steps (Exiftool v11.7.8.0):

  • I've exported all meta-data in a TXT-file. In the QuickTime subsection I found tag "GPS Log".
    exiftool(-a -u -g1 -w _TAGS.txt).exe
---- QuickTime ----
Major Brand                     : Apple QuickTime (.MOV/QT)
Minor Version                   : 0.0.0
Compatible Brands               : qt
Movie Data Size                 : 86029065
Movie Data Offset               : 32
Movie Header Version            : 0
Create Date                     : 2016:10:24 14:29:05
Modify Date                     : 2016:10:24 14:29:05
Time Scale                      : 90000
Duration                        : 0:00:37
Preferred Rate                  : 1
Preferred Volume                : 100.00%
Matrix Structure                : 1 0 0 0 1 0 0 0 1
Preview Time                    : 0 s
Preview Duration                : 0 s
Poster Time                     : 0 s
Selection Time                  : 0 s
Selection Duration              : 0 s
Current Time                    : 0 s
Next Track ID                   : 3
Handler Type                    : Metadata
GPS Log                         : (Binary data 5208 bytes, use -b option to extract)
Unknown ICAT                    : 6350

  • I've exported the tag "GPS Log" only and found valid GPS-coordinates.
    exiftool -ext mov -ee -b -GPSLog -w OUTDIR/%%f.txt INDir
VIDEOUUUUUUUUUUUUUUUUUUUUUUþþ20161024142908 150811182850[0][N][22352703][E][113564343][+00644][000][00000][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 150811182850[0][N][22352703][E][113564343][+00644][000][00000][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 150811182850[0][N][22352703][E][113564343][+00644][000][00000][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 150811182850[0][N][22352703][E][113564343][+00644][000][00000][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 150811182850[0][N][22352703][E][113564343][+00644][000][00000][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 150811182850[0][N][22352703][E][113564343][+00644][000][00000][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 150811182850[0][N][22352703][E][113564343][+00644][000][00000][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122709[1][N][41060145][E][001086763][+00370][116][00107][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122711[1][N][41059989][E][001087263][+00168][111][00099][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122712[1][N][41059957][E][001087492][+00150][114][00097][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122713[1][N][41059947][E][001087743][+00225][118][00095][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122714[1][N][41059938][E][001087983][+00213][116][00091][C000015]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122715[1][N][41059936][E][001088237][+00228][116][00088][C000015]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122716[1][N][41059935][E][001088493][+00257][112][00087][C000015]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122717[1][N][41059949][E][001088723][+00259][112][00085][C000019]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122718[1][N][41059956][E][001088968][+00280][114][00084][C000019]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122719[1][N][41059975][E][001089208][+00286][111][00080][C000019]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122720[1][N][41060021][E][001089397][+00212][109][00077][C000026]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122721[1][N][41060065][E][001089617][+00223][107][00074][C000026]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122722[1][N][41060113][E][001089827][+00177][109][00070][C000026]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122723[1][N][41060177][E][001090021][+00156][111][00067][C000040]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122724[1][N][41060251][E][001090227][+00157][111][00064][C000040]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122725[1][N][41060332][E][001090429][+00152][111][00062][C000040]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122726[1][N][41060425][E][001090623][+00145][114][00058][C000053]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122727[1][N][41060520][E][001090821][+00156][114][00056][C000053]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122728[1][N][41060623][E][001091031][+00165][116][00053][C000053]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122729[1][N][41060729][E][001091226][+00181][111][00050][C000068]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122730[1][N][41060871][E][001091369][+00109][112][00047][C000068]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122731[1][N][41061061][E][001091504][+00158][114][00044][C000068]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122732[1][N][41061192][E][001091678][+00155][112][00042][C000084]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122733[1][N][41061347][E][001091827][+00150][111][00040][C000084]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122734[1][N][41061511][E][001091976][+00178][112][00039][C000084]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122735[1][N][41061658][E][001092174][+00181][112][00037][C000099]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122736[1][N][41061698][E][001092409][+00189][107][00040][C000099]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 161024122737[1][N][41062006][E][001092406][+00194][111][00036][C000099]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000 000000000000000000000000000000000000000000000000000000000000000000000000ýý000000000000000000000000XXXXXXXXXXXX         a89üü

  • Now I tried the following command and I used the latest gpx.fmt file (2019/10/24), but there is no GPS information within the GPX-file. Can anybody help?
    exiftool -p gpx.fmt -ee -ext mov -w OUTDIR/%%f.gpx INDIR

Phil Harvey

ExifTool doesn't currently decode the GPSLog data.  I could maybe add this feature but I need to know which GPSLog tag we are talking about.  What is the output of this command?:

exiftool -G5 -gpslog FILE

Also, could you attach the output of this command so I can see the raw binary data?:
(you'll need to do this from the command line)

exiftool -gpslog -b > out.dat

(maybe zip it first, then attach out.dat.zip)

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

SZ

Hello Phil,

thank you for your help. Here is the link for the zip-file!
https://easyupload.io/n4g172

Phil Harvey

#3
I got the file, thanks.

Attached is a config file that will decode this tag for you.  The config file is rather advanced, and uses some non-public ExifTool functions to accomplish this.  The command will be:

exiftool -config gpslog.config -p gpx.fmt -ee -ext mov -w OUTDIR/%%f.gpx INDIR

As well as the tags I could figure out, there is an Unknown1 tag that is extracted.  Please let me know if you can figure out what this is, or if you notice any problems.

- Phil

Edit: Fixed problems in config file.

Edit2: For ExifTool 12.03 to 12.22, use the config file in this post instead.  For ExifTool 12.23 and later, this GPS format is decoded without a config file.
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

SZ

Hello Phil,

I tried the command with both files, gpslog.config and gpx.fmt, but the created GPX-file has no data.

Code (GPX result) Select
<?xml version="1.0" encoding="utf-8"?>
<gpx version="1.0"
creator="ExifTool 11.78"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.topografix.com/GPX/1/0"
xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
<trk>
<number>1</number>
<trkseg>
</trkseg>
</trk>
</gpx>



SZ

Hi Phil,

I don't understand the whole gpslog.config file, but I guess I found an error. GPSLongitude can't be "N" for north. It has to be "E" for east I think.

GPSLongitude => {
            Require => 'GPSLog',
            RawConv => \&ExtractGPS,
            PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', //"?E?"
        }


Further I guess some array pointer are wrong.
$a[0] =~ s/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/20$1:$2:$3 $4:$5:$6Z/;
        $a[2 ?3?] = substr($a[2 ?3?],0,2) + substr($a[2 ?3?,2) / 600000;
        $a[4 ?5?] = substr($a[4 ?5?],0,3) + substr($a[4 ?5?],3) / 600000;
        $a[2 ?3?] *= -1 if $a[1 ?2?] eq 'S';
        $a[4 ?5?] *= -1 if $a[3 ?4?] eq 'W';

Phil Harvey

You're right about the N/E error, but the subscripts are correct.  It worked with the test file I set up, but there must be something different with your video.  If you could upload it somewhere and send me a link (philharvey66 at gmail.com) I'll take a look.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

SZ

#7
Hello Phil,

thank you for your help!! I've sent you a video link via email.

I figured out what the Unknown tag stands for. It is an information about the consumed calories. The unit is kcal. Here is a screenshot of the denver GPS player:



PH Edit: Added screenshot as an attachment

Phil Harvey

Great, thanks.  The problem was that in my test I didn't make the GPSLog tag a Binary data type, so I didn't need to dereference the $gpsLog variable.  I've fixed this, and fixed the N/E problem, and added a name for the KiloCalories tag, and updated my previous post with the new config file.  I think this would do what you want.  Here is what I get for the track point matching the Denver GPS Player screen dump you sent:

> exiftool -config gpslog.config DenverACG-8050W.mov -ee -G3 -doc9:all
[Doc9]          GPS Date Time                   : 2016:10:24 12:27:18Z
[Doc9]          GPS Latitude                    : 41 deg 5' 59.74" N
[Doc9]          GPS Longitude                   : 1 deg 8' 53.81" E
[Doc9]          GPS Altitude                    : 28 m
[Doc9]          GPS Speed                       : 114
[Doc9]          GPS Track                       : 84
[Doc9]          Kilo Calories                   : 1.9
[Doc9]          Accelerometer                   : +000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000


- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

SZ