Bug 416516 - Add ExifTool based wrapper to read and write metadata with video files
Summary: Add ExifTool based wrapper to read and write metadata with video files
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Metadata-ExifTool (show other bugs)
Version: 6.4.0
Platform: Microsoft Windows Microsoft Windows
: NOR normal
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-01-21 00:48 UTC by Tim
Modified: 2022-04-08 03:36 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: 8.0.0


Attachments
Adobe Bridge Rated mov file (3.05 MB, video/quicktime)
2020-01-21 12:27 UTC, Tim
Details
unaltered mov file (3.05 MB, video/quicktime)
2020-01-21 12:28 UTC, Tim
Details
Windows 10 Properties Rated mov file (3.05 MB, video/quicktime)
2020-01-21 12:29 UTC, Tim
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tim 2020-01-21 00:48:37 UTC
SUMMARY
Windows can natively add a rating to mov and mp4 video files through the file properties details window. It is stored in a QuickTime Tag called SharedUserRating. 5 stars = 99, 4 stars = 75, 3 stars = 50, 2 stars = 25, 1 star = 0. Exiftool cannot write to this tag (as of 20/1/2020), but can read it with the following command. 

exiftool -SharedUserRating <file>

This rating is useful at the File Manager level for searches. It would be good if DigiKam read this and added it to its database, and even better if it could write it.

Another rating tag for mov/mp4 files that would be useful to make use of is the xmp rating tag that Adobe Bridge can read and write. exiftool can read and write this.

exiftool "-xmp:rating" <file>
exiftool "-xmp:rating=5" <file>

Again DigiKam does not read this, but would be good if it did.

Mov/Mp4 video files are still being produced by phones and cameras everywhere. Ideally DigiKam would be able to read and write both these rating tags to the metadata of mov/mp4 files for consistency and interoperability. It would not surprise me if the Mac OS can natively edit the SharedUserRating tag too.


STEPS TO REPRODUCE
1. Set rating on mov/mp4 video file via Windows property
2. Add the file to DigiKam
3. Star rating is not read by DigiKam, nor is updated by DigiKam.

OBSERVED RESULT
Star rating is not read by DigiKam, nor is updated by DigiKam.

EXPECTED RESULT
DigiKam updates Rating metadata.

SOFTWARE/OS VERSIONS
Windows: 10
macOS: -
Linux/KDE Plasma: -
(available in About System)
KDE Plasma Version: 
KDE Frameworks Version: 5.61.0
Qt Version: 5.13.1

ADDITIONAL INFORMATION
Comment 1 caulier.gilles 2020-01-21 05:36:05 UTC
Can you share some samples of video files previously tagged with these information for testing.

Note: digiKam do not use Exiftool to read metadata from video, but ffmpeg.

Gilles Caulier
Comment 2 Tim 2020-01-21 12:27:31 UTC
Created attachment 125276 [details]
Adobe Bridge Rated mov file
Comment 3 Tim 2020-01-21 12:28:35 UTC
Created attachment 125277 [details]
unaltered mov file
Comment 4 Tim 2020-01-21 12:29:30 UTC
Created attachment 125278 [details]
Windows 10 Properties Rated mov file
Comment 5 Tim 2020-01-21 12:31:45 UTC
(In reply to caulier.gilles from comment #1)
> Can you share some samples of video files previously tagged with these
> information for testing.
> 
> Note: digiKam do not use Exiftool to read metadata from video, but ffmpeg.
> 
> Gilles Caulier

Gilles,

I have attached three sample mov files from a Nikon D5100 DSLR. One is unaltered, one rated through Windows properties (which is then searchable by rating through Windows search) and the other rated with Adobe Bridge (which is then searchable by rating through Adobe Bridge).

As I mentioned I used exiftool to check where the metadata was stored.

I know that DigiKam uses ffmpeg to read video metadata, but I could not find the right command to get ffmpeg to show the metadata I had entered. My guess is that you will be much more familiar with ffmpeg than I. In any case I tried to find something that would work with ffmpeg, the closest I got was a post where someone said they used ffprobe to read some com.apple.quicktime.... tags. But they didn't mention the particular command and switches. See comment 21 on this page https://trac.ffmpeg.org/ticket/4209 if it of interest.

Thanks,
Tim.
Comment 6 caulier.gilles 2020-01-21 12:52:25 UTC
https://stackoverflow.com/questions/9464617/retrieving-and-saving-media-metadata-using-ffmpeg

"ffmpeg -i file.mov"

...but here it do not show the extra metadata set under Windows or Adobe Bridge. I tried ffmpeg 3.3.9 and 4.1.2.

Note : ffrobe without arument give the same result than ffmpeg -i.

Ffmpeg parser is limited and need to be improved. This must be reported to ffmpeg team.

Gilles Caulier
Comment 7 Tim 2020-01-21 22:49:18 UTC
(In reply to caulier.gilles from comment #6)
> https://stackoverflow.com/questions/9464617/retrieving-and-saving-media-
> metadata-using-ffmpeg
> 
> "ffmpeg -i file.mov"
> 
> ...but here it do not show the extra metadata set under Windows or Adobe
> Bridge. I tried ffmpeg 3.3.9 and 4.1.2.
> 
> Note : ffrobe without arument give the same result than ffmpeg -i.
> 
> Ffmpeg parser is limited and need to be improved. This must be reported to
> ffmpeg team.
> 
> Gilles Caulier

Don't know if this helps, it is an ffprobe command, but isn't that part of ffmpeg?

ffprobe -export_xmp 1 <file>

This will show the xmp:Rating tag generated by Adobe Bridge.

Tim.
Comment 8 caulier.gilles 2020-01-22 04:11:13 UTC
ffprobe -export_xmp 1 <file>

==> excelent! I don't know if this XMP options exists since a while.

We don't use ffmpeg directly by system calls, but through the C interface. We just need to reproduce the internal ffmpeg call in C in digiKam. It's not too difficult.

Do you know if the inverse option exists: -import_xmp ?
Comment 9 Tim 2020-01-22 06:43:11 UTC
(In reply to caulier.gilles from comment #8)
> ffprobe -export_xmp 1 <file>
> 
> ==> excelent! I don't know if this XMP options exists since a while.
> 
> We don't use ffmpeg directly by system calls, but through the C interface.
> We just need to reproduce the internal ffmpeg call in C in digiKam. It's not
> too difficult.
> 
> Do you know if the inverse option exists: -import_xmp ?

This copies xmp metadata. I tested it on my Adobe xmp sample and it works.

ffmpeg -export_xmp 1 -export_all 1 -i INPUT.MOV -codec copy -export_xmp 1 -export_all 1 OUTPUT.MOV

from
https://www.javascripthater.com/tag/ffmpeg/
Comment 10 Tim 2020-01-24 23:53:46 UTC
This seems to be the best ffmpeg copying for copying/importing metadata.

ffmpeg -export_xmp 1 -export_all 1 -i <input_file> -c copy -export_xmp 1 -export_all 1 -map_metadata 0 <output_file>

It will copy xmp tags and tags ffmpeg supports in the format of the output file. Xmp tags copied seem to be written correctly as Adobe Bridge still reads them. Supported Quicktime tags seem to copy across, but not completely. eg OpenSuse Linux 15.1 can read the copied QuickTime <title> tag, but Windows cannot.

There is another command that will attempt to copy mov tags unsupported by ffmpeg, but it doesn't seem to copy them exactly. Exiftool reports differences and in the case of the rating tags I am interested in neither Windows or Adobe Bridge reads them from the destination file.

ffmpeg -export_xmp 1 -export_all 1 -i <input_file> -c copy -export_xmp 1 -export_all 1 -movflags use_metadata_tags <output_file>
Comment 11 caulier.gilles 2021-04-11 18:00:59 UTC
Maik,

With the new future ExifTool wrapper for metadata, we can support Video files
information update as Exiv2 library do not support this task safety.

Note that Exiv2 video support will be removed in the future as nobody maintain this code since a while.

Not all video file formats are supported for writing operations, but at least
all main video formats are proposed in R/W:

https://exiftool.org/#supported

Gilles
Comment 12 Tim 2021-04-21 23:56:04 UTC
This is good news. And, as of exiftool v12, writing to SharedUserRating is supported. (I have tested on a mp4.)
 https://github.com/exiftool/exiftool/issues/70

I would suggest that DigiKam's application of a rating to a video file updates SharedUserRating and xmp:rating, and any other common rating standard (not sure what OS X does).
Comment 13 caulier.gilles 2021-04-22 04:08:02 UTC
yes, it's planed to use ExifTool to write on files as video and Raw (in fact with all non supported file type by Exiv2).

Gilles Caulier
Comment 14 caulier.gilles 2021-04-25 10:20:18 UTC
*** Bug 366348 has been marked as a duplicate of this bug. ***
Comment 15 caulier.gilles 2021-04-25 13:47:04 UTC
Git commit c701f2a84df48a7526903768778991190b51f776 by Gilles Caulier.
Committed on 25/04/2021 at 13:30.
Pushed by cgilles into branch 'master'.

ExifTool wrapper : introduce applyChanges() method to update existing tags or to add new tags.
The method take a TagsMap hash-table to host ExifTool tag names as key and tag values.
Typically, the key follow ExifTool CLI tool argument typo as EXIF:ImageDescription. The value is a UTF8 string.
This method is not yet used, unit tests must be written in first.
Related: bug 325458, bug 326408

M  +167  -47   core/libs/metadataengine/exiftool/exiftoolparser.cpp
M  +23   -4    core/libs/metadataengine/exiftool/exiftoolparser.h
M  +39   -27   core/libs/metadataengine/exiftool/exiftoolprocess.cpp
M  +15   -6    core/libs/metadataengine/exiftool/exiftoolprocess.h

https://invent.kde.org/graphics/digikam/commit/c701f2a84df48a7526903768778991190b51f776
Comment 16 caulier.gilles 2021-04-26 08:59:05 UTC
Git commit b3c56d4cdedb4ad83c7baca89c32d011f1738090 by Gilles Caulier.
Committed on 26/04/2021 at 08:58.
Pushed by cgilles into branch 'master'.

Use EXV container to translate automatically all metadata from ExifTool to Exiv2
Related: bug 426938, bug 421464, bug 360714

M  +23   -76   core/libs/metadataengine/exiftool/exiftoolparser.cpp
M  +2    -5    core/libs/metadataengine/exiftool/exiftoolparser.h
M  +13   -38   core/tests/metadataengine/exiftool/exiftoolexport_cli.cpp

https://invent.kde.org/graphics/digikam/commit/b3c56d4cdedb4ad83c7baca89c32d011f1738090
Comment 17 caulier.gilles 2021-04-26 09:06:58 UTC
Git commit 183a05476b1fa485e5143e0bb28d84e3a8daa471 by Gilles Caulier.
Committed on 26/04/2021 at 09:08.
Pushed by cgilles into branch 'master'.

Remove obsolete ExifToolTranslator class. We use now the auto conversion to Exiv2 through EXV container processed by ExivTool
Related: bug 426938, bug 421464, bug 360714

M  +0    -6    core/libs/metadataengine/CMakeLists.txt
M  +10   -114  core/libs/metadataengine/exiftool/exiftoolparser.cpp
D  +0    -81   core/libs/metadataengine/exiftool/exiftooltranslator.cpp
D  +0    -65   core/libs/metadataengine/exiftool/exiftooltranslator.h
D  +0    -196  core/libs/metadataengine/exiftool/exiftooltranslator_exif.cpp
D  +0    -51   core/libs/metadataengine/exiftool/exiftooltranslator_ignoredgroups.cpp
D  +0    -164  core/libs/metadataengine/exiftool/exiftooltranslator_iptc.cpp
D  +0    -76   core/libs/metadataengine/exiftool/exiftooltranslator_p.cpp
D  +0    -73   core/libs/metadataengine/exiftool/exiftooltranslator_p.h
D  +0    -439  core/libs/metadataengine/exiftool/exiftooltranslator_xmp.cpp
M  +0    -1    core/libs/widgets/metadata/exiftool/exiftoollistview.cpp
M  +0    -1    core/tests/metadataengine/exiftool/CMakeLists.txt
D  +0    -318  core/tests/metadataengine/exiftool/exiftoolxmldb_cli.cpp

https://invent.kde.org/graphics/digikam/commit/183a05476b1fa485e5143e0bb28d84e3a8daa471
Comment 18 caulier.gilles 2021-04-26 11:01:35 UTC
Git commit 5b097916d8bfa42fef5a2966fa3b34d0793cf0e2 by Gilles Caulier.
Committed on 26/04/2021 at 11:02.
Pushed by cgilles into branch 'master'.

separate ExitTool parser and process classes internal container implementations
Related: bug 426938, bug 360714

M  +2    -0    core/libs/metadataengine/CMakeLists.txt
M  +15   -154  core/libs/metadataengine/exiftool/exiftoolparser.cpp
M  +0    -11   core/libs/metadataengine/exiftool/exiftoolparser.h
A  +132  -0    core/libs/metadataengine/exiftool/exiftoolparser_p.cpp     [License: GPL (v2+)]
A  +83   -0    core/libs/metadataengine/exiftool/exiftoolparser_p.h     [License: GPL (v2+)]
M  +10   -209  core/libs/metadataengine/exiftool/exiftoolprocess.cpp
M  +10   -20   core/libs/metadataengine/exiftool/exiftoolprocess.h
A  +171  -0    core/libs/metadataengine/exiftool/exiftoolprocess_p.cpp     [License: GPL (v2+)]
A  +107  -0    core/libs/metadataengine/exiftool/exiftoolprocess_p.h     [License: GPL (v2+)]
M  +0    -1    core/tests/metadataengine/exiftool/exiftoolmulticore_cli.cpp
M  +0    -1    core/tests/metadataengine/exiftool/exiftooloutput_cli.cpp
M  +1    -1    core/tests/metadataengine/exiftool/exiftoolparserout_cli.cpp

https://invent.kde.org/graphics/digikam/commit/5b097916d8bfa42fef5a2966fa3b34d0793cf0e2
Comment 19 caulier.gilles 2021-04-27 09:27:04 UTC
Git commit 1dff0b016bc15918440a807863757376e297c53e by Gilles Caulier.
Committed on 27/04/2021 at 09:27.
Pushed by cgilles into branch 'master'.

With load EXV chunk method, also backport all possible metadata to XMP. This permit to get all main information from video files not supported by Exiv2, as Quicktime for MP4
Related: bug 426938

M  +1    -0    core/libs/metadataengine/exiftool/exiftoolparser.cpp

https://invent.kde.org/graphics/digikam/commit/1dff0b016bc15918440a807863757376e297c53e
Comment 20 caulier.gilles 2021-05-08 16:52:13 UTC
Git commit 434f065e74282cbb9335c2cc4db256007ca2ae5d by Gilles Caulier.
Committed on 08/05/2021 at 16:46.
Pushed by cgilles into branch 'master'.

ExifTool support: add new method to get list of changes operated on metadata. The goal is to make a temporary EXV file to pass later to ExifTool to patch target file.
Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 421464, bug 436286

M  +162  -0    core/libs/metadataengine/engine/metaengine.cpp
M  +5    -0    core/libs/metadataengine/engine/metaengine.h
M  +0    -1    core/libs/metadataengine/engine/metaengine_p.cpp

https://invent.kde.org/graphics/digikam/commit/434f065e74282cbb9335c2cc4db256007ca2ae5d
Comment 21 caulier.gilles 2021-05-09 08:33:42 UTC
Git commit 2cb42fd246428932edd2049c59def826dcc9a420 by Gilles Caulier.
Committed on 09/05/2021 at 08:13.
Pushed by cgilles into branch 'master'.

ExifTool support: now export the list of tags changes from Exif, Iptc, and Xmp in a temporary EXV file.
We will pass later this file to ExifTool to patch target file.
Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 421464, bug 436286

M  +0    -186  core/libs/metadataengine/engine/metaengine.cpp
M  +8    -5    core/libs/metadataengine/engine/metaengine.h
M  +196  -0    core/libs/metadataengine/engine/metaengine_fileio.cpp
M  +4    -4    core/tests/metadataengine/CMakeLists.txt
R  +5    -4    core/tests/metadataengine/exportchanges_cli.cpp [from: core/tests/metadataengine/dmetadatadiff_cli.cpp - 082% similarity]

https://invent.kde.org/graphics/digikam/commit/2cb42fd246428932edd2049c59def826dcc9a420
Comment 22 caulier.gilles 2021-05-09 13:18:49 UTC
Git commit 2ef074a3f5c239bf4674c4cdda5bf99f511d8ae0 by Gilles Caulier.
Committed on 09/05/2021 at 13:04.
Pushed by cgilles into branch 'master'.

ExifTool support: add new method to apply list of changes operated on metadata.
A temporary EXV file constainer is computed with the list of changes to operated on Exif, Iptc, and Xmp.
This EXV file is processed with ExifTool to patch metadata.
Add new CLI test tool to try apply changes with EXV constainer. Here the file is patched with DMetadata::setImageDateTime()
which change or add new tags in Exif, Iptc, and Xmp

Exemple of changes processed to a CR3 raw image:

CR3 ORIGINAL:

exiftool -G:0:1:2:4 -exif:all -xmp:all 2020-09-22_21-27-23_0C4A1060.CR3_original
[EXIF:IFD0:Image] Image Width                   : 8192
[EXIF:IFD0:Image] Image Height                  : 5464
[EXIF:IFD0:Image] Bits Per Sample               : 8 8 8
[EXIF:IFD0:Image] Compression                   : JPEG (old-style)
[EXIF:IFD0:Camera] Make                         : Canon
[EXIF:IFD0:Camera] Camera Model Name            : Canon EOS R5
[EXIF:IFD0:Image] Orientation                   : Rotate 90 CW
[EXIF:IFD0:Image] Resolution Unit               : inches
[EXIF:IFD0:Author] Artist                       : kdmurray
[EXIF:IFD0:Author] Copyright                    :
[EXIF:ExifIFD:Image] Exposure Time              : 1/200
[EXIF:ExifIFD:Image] F Number                   : 10.0
[EXIF:ExifIFD:Camera] Exposure Program          : Manual
[EXIF:ExifIFD:Image] ISO                        : 400
[EXIF:ExifIFD:Image] Sensitivity Type           : Recommended Exposure Index
[EXIF:ExifIFD:Image] Recommended Exposure Index : 400
[EXIF:ExifIFD:Image] Exif Version               : 0231
[EXIF:ExifIFD:Time] Date/Time Original          : 2020:09:22 21:27:23
[EXIF:ExifIFD:Time] Offset Time                 : +10:00
[EXIF:ExifIFD:Time] Offset Time Original        : +10:00
[EXIF:ExifIFD:Time] Offset Time Digitized       : +10:00
[EXIF:ExifIFD:Image] Components Configuration   : Y, Cb, Cr, -
[EXIF:ExifIFD:Image] Shutter Speed Value        : 1/197
[EXIF:ExifIFD:Image] Aperture Value             : 9.9
[EXIF:ExifIFD:Camera] Flash                     : On, Fired
[EXIF:ExifIFD:Camera] Focal Length              : 90.0 mm
[EXIF:ExifIFD:Image] User Comment               :
[EXIF:ExifIFD:Time] Sub Sec Time                : 59
[EXIF:ExifIFD:Time] Sub Sec Time Original       : 59
[EXIF:ExifIFD:Time] Sub Sec Time Digitized      : 59
[EXIF:ExifIFD:Image] Flashpix Version           : 0100
[EXIF:ExifIFD:Image] Exif Image Width           : 8192
[EXIF:ExifIFD:Image] Exif Image Height          : 5464
[EXIF:ExifIFD:Camera] Focal Plane X Resolution  : 5773.079634
[EXIF:ExifIFD:Camera] Focal Plane Y Resolution  : 5769.799366
[EXIF:ExifIFD:Camera] Focal Plane Resolution Unit: inches
[EXIF:ExifIFD:Image] Custom Rendered            : Normal
[EXIF:ExifIFD:Camera] Exposure Mode             : Manual
[EXIF:ExifIFD:Camera] Scene Capture Type        : Standard
[EXIF:ExifIFD:Image] Serial Number              : 035021000124
[EXIF:ExifIFD:Image] Lens Info                  : 90mm f/0
[EXIF:ExifIFD:Image] Lens Serial Number         : 0000000000
[EXIF:GPS:Location] GPS Version ID              : 2.3.0.0
[EXIF:GPS:Location] GPS Altitude Ref            : Above Sea Level
[EXIF:GPS:Location] GPS Satellites              :
[EXIF:GPS:Location] GPS Status                  : Unknown ()
[EXIF:GPS:Location] GPS Measure Mode            : Unknown ()
[XMP:XMP-xmp:Image] Rating                      : 0

*EXV constainer generated:

exiftool -G:0:1:2:4 -exif:all -xmp:all 2020-09-22_21-27-23_0C4A1060_changes.exv
[XMP:XMP-x:Document] XMP Toolkit                : XMP Core 4.4.0-Exiv2
[XMP:XMP-exif:Time] Date/Time Original          : 2021:05:09 15:02:43
[XMP:XMP-exif:Time] Date/Time Digitized         : 2021:05:09 15:02:43
[XMP:XMP-tiff:Time] Date/Time Modified          : 2021:05:09 15:02:43
[XMP:XMP-xmp:Time] Create Date                  : 2021:05:09 15:02:43
[XMP:XMP-xmp:Time] Metadata Date                : 2021:05:09 15:02:43
[XMP:XMP-xmp:Time] Modify Date                  : 2021:05:09 15:02:43

*CR3 PATCHED:

exiftool]$ exiftool -G:0:1:2:4 -exif:all -xmp:all 2020-09-22_21-27-23_0C4A1060.CR3
[EXIF:IFD0:Image] Image Width                   : 8192
[EXIF:IFD0:Image] Image Height                  : 5464
[EXIF:IFD0:Image] Bits Per Sample               : 8 8 8
[EXIF:IFD0:Image] Compression                   : JPEG (old-style)
[EXIF:IFD0:Camera] Make                         : Canon
[EXIF:IFD0:Camera] Camera Model Name            : Canon EOS R5
[EXIF:IFD0:Image] Orientation                   : Rotate 90 CW
[EXIF:IFD0:Image] Resolution Unit               : inches
[EXIF:IFD0:Author] Artist                       : kdmurray
[EXIF:IFD0:Author] Copyright                    :
[EXIF:ExifIFD:Image] Exposure Time              : 1/200
[EXIF:ExifIFD:Image] F Number                   : 10.0
[EXIF:ExifIFD:Camera] Exposure Program          : Manual
[EXIF:ExifIFD:Image] ISO                        : 400
[EXIF:ExifIFD:Image] Sensitivity Type           : Recommended Exposure Index
[EXIF:ExifIFD:Image] Recommended Exposure Index : 400
[EXIF:ExifIFD:Image] Exif Version               : 0231
[EXIF:ExifIFD:Time] Offset Time                 : +10:00
[EXIF:ExifIFD:Time] Offset Time Original        : +10:00
[EXIF:ExifIFD:Time] Offset Time Digitized       : +10:00
[EXIF:ExifIFD:Image] Components Configuration   : Y, Cb, Cr, -
[EXIF:ExifIFD:Image] Shutter Speed Value        : 1/197
[EXIF:ExifIFD:Image] Aperture Value             : 9.9
[EXIF:ExifIFD:Camera] Flash                     : On, Fired
[EXIF:ExifIFD:Camera] Focal Length              : 90.0 mm
[EXIF:ExifIFD:Image] User Comment               :
[EXIF:ExifIFD:Time] Sub Sec Time                : 59
[EXIF:ExifIFD:Time] Sub Sec Time Original       : 59
[EXIF:ExifIFD:Time] Sub Sec Time Digitized      : 59
[EXIF:ExifIFD:Image] Flashpix Version           : 0100
[EXIF:ExifIFD:Image] Exif Image Width           : 8192
[EXIF:ExifIFD:Image] Exif Image Height          : 5464
[EXIF:ExifIFD:Camera] Focal Plane X Resolution  : 5773.079634
[EXIF:ExifIFD:Camera] Focal Plane Y Resolution  : 5769.799366
[EXIF:ExifIFD:Camera] Focal Plane Resolution Unit: inches
[EXIF:ExifIFD:Image] Custom Rendered            : Normal
[EXIF:ExifIFD:Camera] Exposure Mode             : Manual
[EXIF:ExifIFD:Camera] Scene Capture Type        : Standard
[EXIF:ExifIFD:Image] Serial Number              : 035021000124
[EXIF:ExifIFD:Image] Lens Info                  : 90mm f/0
[EXIF:ExifIFD:Image] Lens Serial Number         : 0000000000
[EXIF:GPS:Location] GPS Version ID              : 2.3.0.0
[EXIF:GPS:Location] GPS Altitude Ref            : Above Sea Level
[EXIF:GPS:Location] GPS Satellites              :
[EXIF:GPS:Location] GPS Status                  : Unknown ()
[EXIF:GPS:Location] GPS Measure Mode            : Unknown ()
[XMP:XMP-x:Document] XMP Toolkit                : Image::ExifTool 12.00
[XMP:XMP-exif:Time] Date/Time Digitized         : 2021:05:09 15:02:43           <====!
[XMP:XMP-exif:Time] Date/Time Original          : 2021:05:09 15:02:43           <====!
[XMP:XMP-photoshop:Time] Date Created           : 2021:05:09 15:02:43           <====!
[XMP:XMP-tiff:Time] Date/Time Modified          : 2021:05:09 15:02:43           <====!
[XMP:XMP-xmp:Time] Create Date                  : 2021:05:09 15:02:43           <====!
[XMP:XMP-xmp:Time] Metadata Date                : 2021:05:09 15:02:43           <====!
[XMP:XMP-xmp:Time] Modify Date                  : 2021:05:09 15:02:43           <====!
[XMP:XMP-xmp:Image] Rating                      : 0
Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 421464, bug 436286

M  +12   -2    core/libs/metadataengine/exiftool/exiftoolparser.h
M  +32   -0    core/libs/metadataengine/exiftool/exiftoolparser_command.cpp
M  +6    -0    core/libs/metadataengine/exiftool/exiftoolparser_output.cpp
M  +1    -0    core/libs/metadataengine/exiftool/exiftoolprocess.h
M  +2    -1    core/tests/metadataengine/exiftool/CMakeLists.txt
C  +20   -19   core/tests/metadataengine/exiftool/exiftoolapplychanges_cli.cpp [from: core/tests/metadataengine/exiftool/exiftoolwrite_cli.cpp - 059% similarity]
M  +1    -1    core/tests/metadataengine/exiftool/exiftoolwrite_cli.cpp

https://invent.kde.org/graphics/digikam/commit/2ef074a3f5c239bf4674c4cdda5bf99f511d8ae0
Comment 23 caulier.gilles 2021-05-15 15:19:12 UTC
Git commit 5507cb4c7779f42321d751d3788ee18562df6c9d by Gilles Caulier.
Committed on 15/05/2021 at 15:14.
Pushed by cgilles into branch 'master'.

ExifToolParser: new command to copy tags from source file to a destination file.
Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 421464, bug 436286, bug 381967

M  +7    -0    core/libs/metadataengine/exiftool/exiftoolparser.h
M  +64   -0    core/libs/metadataengine/exiftool/exiftoolparser_command.cpp
M  +17   -1    core/libs/metadataengine/exiftool/exiftoolprocess.h

https://invent.kde.org/graphics/digikam/commit/5507cb4c7779f42321d751d3788ee18562df6c9d
Comment 24 caulier.gilles 2021-05-16 10:15:04 UTC
Git commit 8f332525788359d2c13c3e029bfb1b956dd5a4d2 by Gilles Caulier.
Committed on 16/05/2021 at 10:09.
Pushed by cgilles into branch 'master'.

DNGWriter : include ExifTool Error View in Settings Widget.
Fix API to check ExifTool program availability.
Factoring codes.
Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 421464, bug 436286, bug 381967

M  +29   -5    core/libs/dngwriter/dngsettings.cpp
M  +6    -0    core/libs/dngwriter/dngsettings.h
M  +3    -10   core/libs/metadataengine/exiftool/exiftoolparser.cpp
M  +4    -1    core/libs/metadataengine/exiftool/exiftoolparser.h
M  +31   -21   core/libs/metadataengine/exiftool/exiftoolprocess.cpp
M  +2    -0    core/libs/metadataengine/exiftool/exiftoolprocess.h

https://invent.kde.org/graphics/digikam/commit/8f332525788359d2c13c3e029bfb1b956dd5a4d2
Comment 25 caulier.gilles 2021-05-17 04:02:03 UTC
Git commit 067a15c4ed14d75eb2ce3cc725fcba709131392e by Gilles Caulier.
Committed on 17/05/2021 at 03:57.
Pushed by cgilles into branch 'master'.

DPlugin interface; add new method to be able to open an host application setup dialog page from a plugin.
DNGWriter: add ExifTool error view to settings Widget. If ExifTool is not available, show error view and allow
Related: bug 134486, bug 170693, bug 219856, bug 237504, bug 264210, bug 309341, bug 325458, bug 326408, bug 377622, bug 384092, bug 406540, bug 421464, bug 436286, bug 381967
to customize installation from configuration panel.

M  +1    -1    core/app/main/digikamapp.cpp
M  +1    -0    core/app/main/digikamapp_p.h
M  +28   -0    core/dplugins/bqm/convert/converttodng/converttodng.cpp
M  +1    -1    core/dplugins/bqm/convert/converttodng/converttodng.h
M  +20   -1    core/libs/database/utils/ifaces/dbinfoiface.cpp
M  +2    -0    core/libs/database/utils/ifaces/dbinfoiface.h
M  +5    -1    core/libs/dngwriter/dngsettings.cpp
M  +4    -4    core/libs/dngwriter/dngwriter_postprocess.cpp
M  +4    -1    core/libs/dplugins/iface/dinfointerface.cpp
M  +13   -0    core/libs/dplugins/iface/dinfointerface.h
M  +1    -1    core/libs/metadataengine/exiftool/exiftoolparser.cpp
M  +6    -6    core/libs/widgets/metadata/exiftool/exiftoolconfpanel.cpp
M  +1    -1    core/libs/widgets/metadata/exiftool/exiftoollistview.cpp
M  +1    -0    core/showfoto/CMakeLists.txt
M  +1    -1    core/showfoto/main/showfoto.cpp
M  +2    -1    core/showfoto/main/showfoto_p.h
A  +66   -0    core/showfoto/main/showfotoinfoiface.cpp     [License: GPL (v2+)]
A  +51   -0    core/showfoto/main/showfotoinfoiface.h     [License: GPL (v2+)]
M  +2    -2    core/tests/metadataengine/exiftool/exiftoolmulticore_cli.cpp
M  +14   -1    core/utilities/queuemanager/dplugins/dpluginbqm.cpp
M  +7    -0    core/utilities/queuemanager/dplugins/dpluginbqm.h
M  +1    -0    core/utilities/queuemanager/main/queuemgrwindow.h
M  +10   -0    core/utilities/queuemanager/manager/batchtoolsfactory.cpp
M  +3    -0    core/utilities/queuemanager/manager/batchtoolsfactory.h

https://invent.kde.org/graphics/digikam/commit/067a15c4ed14d75eb2ce3cc725fcba709131392e
Comment 26 verweis-buergerin-0o 2022-02-10 08:04:52 UTC
Hi,
any updates regarding this topic?
I am having exactly the same problem with DigiKam 7.5.0
So it seems to me, that reading / writing the rating tags for video files is still not supported.
Windows is using the tag "SharedUserRating" as described. This seems to be ignored by DigiKam. And the other way around, DigiKam doesn't write any rating metadata to a video file. That means, if i copy the file to another PC, this information is gone as it is only stored in the database localy.
This would be very nice as videos are getting more important in everyones media collection 😁
Thanks a lot.
Comment 27 caulier.gilles 2022-02-10 08:07:22 UTC
Read only metadata from Exiv2 replacement with ExifTool It's not yet fully implemented. Still in TODO list.

For the moment, we focused on Qt6 port to prepare all main base code for summer students. 

Gilles Caulier
Comment 28 caulier.gilles 2022-04-06 20:54:09 UTC
Git commit febc26188fe4e6037e5c8a9b1840f65729972a47 by Gilles Caulier.
Committed on 06/04/2022 at 20:38.
Pushed by cgilles into branch 'master'.

Add ExifTool backend to load metadata for image or video.
Exiv2 is always used in priority. If it fail, ExifTool is used instead.
ExifTool has the capability to create an EXV container for Exiv2. All metadata extracted with ExifTool
are concatened to the EXV container with all possible translations with Exif, Iptc, and Xmp tags.
Of course tags supported by ExifTool but not supported by Exiv2 are lost.
Related: bug 385726, bug 360714, bug 264210, bug 426938, bug 419801, bug 419375, bug 103247

M  +1    -0    core/libs/metadataengine/CMakeLists.txt
M  +7    -0    core/libs/metadataengine/dmetadata/dmetadata.h
A  +94   -0    core/libs/metadataengine/dmetadata/dmetadata_exiftool.cpp     [License: GPL (v2+)]
M  +42   -17   core/libs/metadataengine/dmetadata/dmetadata_fileio.cpp
M  +7    -6    core/libs/metadataengine/engine/metaengine.h
M  +5    -0    core/libs/metadataengine/engine/metaengine_fileio.cpp
M  +4    -2    core/libs/metadataengine/exiftool/exiftoolparser_command.cpp

https://invent.kde.org/graphics/digikam/commit/febc26188fe4e6037e5c8a9b1840f65729972a47
Comment 29 caulier.gilles 2022-04-07 04:58:08 UTC
Git commit 3a672f38cda7738356f19707a6a634ca91c269e6 by Gilles Caulier.
Committed on 07/04/2022 at 04:45.
Pushed by cgilles into branch 'master'.

Write metadata with ExifTool backend if Exiv2 fails to process, for exemple with RAW files or Video files.
Tested successfuly with a MP4 video to insert a comment.
For RAW and other king of files as MPO or JPEG with more than 64kB of Exif segement, Exiv2 must be bannned to uses in cases of writting operations as files can be corrupted.
This require more regression tests to validate ExifTool uses in place of Exiv2.
Related: bug 406540, bug 237504, bug 384092, bug 264210, bug 326408, bug 421464, bug 134486, bug 309341, bug 219856, bug 377622, bug 325458, bug 170693, bug 448729, bug 338075, bug 436876, bug 366348

M  +1    -0    core/libs/metadataengine/dmetadata/dmetadata.h
M  +43   -0    core/libs/metadataengine/dmetadata/dmetadata_exiftool.cpp
M  +49   -3    core/libs/metadataengine/dmetadata/dmetadata_fileio.cpp
M  +2    -2    core/libs/metadataengine/exiftool/exiftoolparser.h

https://invent.kde.org/graphics/digikam/commit/3a672f38cda7738356f19707a6a634ca91c269e6
Comment 30 caulier.gilles 2022-04-08 03:36:50 UTC
Git commit 80ecdd9980c6cf14789606455bf9d367c1ffef51 by Gilles Caulier.
Committed on 08/04/2022 at 03:25.
Pushed by cgilles into branch 'master'.

Use only ExifTool backend to write metadata to RAW files, as Exiv2 is fully unsafe with these kind of operations.
Reading and Writing metadata to video files is now delegate to ExifTool Backend too.
Related: bug 406540, bug 237504, bug 384092, bug 264210, bug 326408, bug 134486, bug 309341, bug 377622, bug 170693, bug 419801, bug 338075, bug 366348
FIXED-IN: 8.0.0

M  +1    -0    NEWS
M  +13   -0    core/libs/metadataengine/dmetadata/dmetadata_exiftool.cpp
M  +6    -52   core/libs/metadataengine/engine/metaengine_p.cpp
M  +4    -20   core/utilities/setup/metadata/setupmetadata.cpp
M  +3    -4    core/utilities/setup/metadata/setupmetadata_behavior.cpp

https://invent.kde.org/graphics/digikam/commit/80ecdd9980c6cf14789606455bf9d367c1ffef51