ffmpegmetadatamp4ffprobexmp

What is the difference between "location" and "location-eng" metadata of a MP4 file?


I am trying to retrieve GPS information from media files using ffprobe, for example:

$ ffprobe -v quiet -show_format sample.mp4
[FORMAT]
filename=sample.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=4.293000
size=11888152
bit_rate=22153556
probe_score=100
TAG:major_brand=mp42
TAG:minor_version=0
TAG:compatible_brands=isommp42
TAG:creation_time=2020-09-20T11:33:49.000000Z
TAG:location=+25.0731+121.3663/
TAG:location-eng=+25.0731+121.3663/
TAG:com.android.version=10
TAG:com.android.manufacturer=Google
TAG:com.android.model=Pixel
[/FORMAT]

We can see that there are 2 tags that look like ISO6709 representations, location and location-eng.

And here are my questions:

  1. What is the difference between location and location-eng? It looks like they are always the same. Why do we need 2 different keys with same the value?
  2. Are location and location-eng really in ISO6709 representations? Is there any specification or standard I can refer to?

I would really appreciate your help.


Solution

  • location-xyz is the localized version of the location, where xyz is an ISO 639-3 language code.

    The need for localized location metadata entries comes from the the way this metadata is stored based on 3GPP Technical Specification 26.244.

    The TS defines a loci sub-box type which can be present in the user-data box udta. The sub-box contains a ISO 639-2 language code that applies to fields like the place name.

    So to answer your questions:

    1. location-eng holds the English location data which includes the coordinates and, optionally, the place name in FFmpeg's case
    2. Yes, they use ISO 6709. A place name is optionally specified after the trailing slash for the coordinates.