Images and videos from Elphel 353/363 cameras are tagged with EXIF data (we use standard EXIF fields (EXIF 2.2 specification from exif.org)).
Reading EXIF from Images
Basically any standard software that can read EXIF data from JPEG images should work.
exiv2 allow you to add, delete and modify metadata.
Though the makernote is an EXIF field that is different (structure as well as content) for every camera manufacturer.
Reading EXIF from Videos
Each frame of Elphel generated MJPEG / (OGM or MOV) videos also contain EXIF data.
See examples of how to read them below.
GSTreamer metadatademux — element that parse or demux metadata from image files, we need to make it work with MJPEG video files.
To test it on single image:
gst-launch -v -m filesrc location=./test.jpeg ! metadatademux ! fakesink silent=TRUE
The idea is to be able to parse a video in realtime, use metadatademux plugin to extract needed EXIF field and pipe them to another plugin such as subparse or textoverlay to include those data on the video or a custom plugin to write KML/KMZ files for google earth.
OGG has a provision to include metadata. It can be interesting as many players have support for subtitles.
MOV EXIF Data Extraction Example Script
This example script was written by Konstantin Kim in PHP and based on PEL (PHP Exif Library) from Martin Geisler.
Both are released under GNU GPL V3.
The script extracts EXIF data from a MOV file and writes it to a KML file. It's easy to modify to do something else.
Though the script has a design error, it needs to load the entire MOV file into RAM. So dont use it with 32GB files ;)
MOV EXIF Data Extraction Script (NASA)
This script was modified by Scott Janz based on the work by Konstantin Kim in PHP and based on PEL (PHP Exif Library) from Martin Geisler.
This includes the PEL distribution as well since one file had to be modified.
The script is modified to output the location parameters (GPS coordinates) to a text file formatted in a way that you can read it with QuickTime and overlay the information on the movie.
All JPEG images have mentioned below fields (you can check this with any program what have support of Exif, in Linux with "exif" command line program, for example):
|Tag name||Tag ID||Sample value||description|
|Image description||0x010E||coming soon...|
|Software||0x0131||220.127.116.11||firmware version of camera at exposition moment|
|Date and Time||0x0132||1970:01:01 01:50:14||standard; time from FPGA RTC at sensor start moment|
|Artist||0x013B||00:0E:64:01:02:03||serial number of camera (Ethernet MAC address), ASCIIZ value|
|Exposure Time||0x829A||1/49 sec.||standard|
|Date and Time (original)||0x9003||1970:01:01 01:50:14||standard; time from FPGA RTC at sensor start moment|
|SubSecTimeOriginal||0x9291||686527||standard; time from FPGA RTC at sensor start moment|
Note: in latest at this moment firmware (18.104.22.168) for 353 camera (CMOS sensor) all fields are correct, but with 363 camera (CCD sensor) we have wrong exposure time and shifted timestamp - TODO.
Exif data supported by Imgsrv and Camogm is described in Imgsrv#imgsrv_and_Exif_data. More changes are expected shortly - software will support more flexible Exif data including GPS-related fields.--Andrey.filippov 10:40, 28 March 2008 (CDT)
Adding additional EXIF2.2 Data Fields in the camera
Emails by Andrey Filippov on Support Mailinglist: