在Android设备上提取视频文件的元数据

7
我需要在Android上读取视频文件的元数据。我已经查看了通过MediaStore.Video.VideoColumnsandroid.media.MediaMetadataRetriever可用的标签。然而,这两个都没有让我访问一些额外的标签,而像Phil Harvey的ExifTool这样的工具可以访问这些标签。
我主要关注相机制造商/型号、压缩器ID标签,但真的想知道如何访问其他标签。
Android中是否存在API来读取这些额外的标签,或者我是否需要实现特定于文件格式的本地元数据解析器?
这里是使用iPhone相机拍摄的视频所生成的ExifTool输出:
ExifTool Version Number         : 9.28
File Name                       : iPhone.MOV
Directory                       : .
File Size                       : 74 kB
File Modification Date/Time     : 2013:04:30 14:41:24+09:00
File Access Date/Time           : 2013:04:30 14:41:24+09:00
File Creation Date/Time         : 2013:04:30 14:41:24+09:00
File Permissions                : rw-rw-rw-
File Type                       : MOV
MIME Type                       : video/quicktime
Major Brand                     : Apple QuickTime (.MOV/QT)
Minor Version                   : 0.0.0
Compatible Brands               : qt
Movie Data Size                 : 71757
Movie Header Version            : 0
Modify Date                     : 2013:04:30 05:40:07
Time Scale                      : 600
Duration                        : 5.36 s
Preferred Rate                  : 1
Preferred Volume                : 100.00%
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
Track Header Version            : 0
Track Create Date               : 2013:04:30 05:40:06
Track Modify Date               : 2013:04:30 05:40:07
Track ID                        : 1
Track Duration                  : 5.34 s
Track Layer                     : 0
Track Volume                    : 100.00%
Balance                         : 0
Audio Channels                  : 1
Audio Bits Per Sample           : 16
Audio Sample Rate               : 44100
Audio Format                    : chan
Matrix Structure                : 0 1 0 -1 0 0 272 0 1
Image Width                     : 480
Image Height                    : 272
Clean Aperture Dimensions       : 480x272
Production Aperture Dimensions  : 480x272
Encoded Pixels Dimensions       : 480x272
Media Header Version            : 0
Media Create Date               : 2013:04:30 05:40:06
Media Modify Date               : 2013:04:30 05:40:07
Media Time Scale                : 600
Media Duration                  : 5.37 s
Media Language Code             : und
Graphics Mode                   : ditherCopy
Op Color                        : 32768 32768 32768
Handler Class                   : Data Handler
Handler Vendor ID               : Apple
Handler Description             : Core Media Data Handler
Compressor ID                   : avc1
Source Image Width              : 480
Source Image Height             : 272
X Resolution                    : 72
Y Resolution                    : 72
Compressor Name                 : H.264
Bit Depth                       : 24
Video Frame Rate                : 30
Camera Identifier               : Back
Frame Readout Time              : 28512 microseconds
Make                            : Apple
Software Version                : 6.1.3
Create Date                     : 2013:04:30 14:39:40+09:00
GPS Coordinates                 : 37 deg 15' 19.08" N, 127 deg 2' 59.28" E, 43 m Above Sea Level
Model                           : iPhone 4S
Handler Type                    : Metadata Tags
Make (und-IN)                   : Apple
Creation Date (und-IN)          : 2013:04:30 14:39:40+09:00
GPS Coordinates (und-IN)        : 37 deg 15' 19.08" N, 127 deg 2' 59.28" E, 43 m Above Sea Level
Software (und-IN)               : 6.1.3
Model (und-IN)                  : iPhone 4S
Avg Bitrate                     : 107 kbps
GPS Altitude                    : 43 m
GPS Altitude Ref                : Above Sea Level
GPS Latitude                    : 37 deg 15' 19.08" N
GPS Longitude                   : 127 deg 2' 59.28" E
GPS Position                    : 37 deg 15' 19.08" N, 127 deg 2' 59.28" E
Image Size                      : 480x272
Rotation                        : 90

我可能有一个解决方案,你有示例视频的链接吗? - William Seemann
尝试使用我从http://dev.exiv2.org/boards/3/topics/1189获取的http://dev.exiv2.org/attachments/341/video-2012-07-05-02-29-27.mp4。不过,版权之类的问题我也不确定。谢谢。 - Code Poet
该库将返回所有可用的元数据标签(免责声明:我编写了它)。如果您想启用对其他格式的支持,也可以手动构建它。https://github.com/wseemann/FFmpegMediaMetadataRetriever - William Seemann
听起来很棒,我会看一下。谢谢。为什么不把你的评论作为答案,然后我可以接受它。 - Code Poet
刚刚将其添加为答案。如果您需要帮助或无法正常工作,请告诉我。如果此库无法检索您要查找的元数据,我怀疑其他任何库都无法做到。 - William Seemann
1个回答

10

这里有一个更好的答案 - https://dev59.com/xpbfa4cB1Zd3GeqPwJ2N#36960843 - Inoy
2
威廉的库在我的两次尝试中更加可靠。 - Ohiovr
您还可以考虑使用MediaInfo库(https://mediaarea.net/en/MediaInfo)。它包含有关相机/型号的元数据。您可以下载源代码(C ++)并为arm和x86构建它(我已经这样做了)。您还将找到一个充当API的Java类和示例,以了解如何使用它。请尝试访问https://mediaarea.net/MediaInfoOnline以查看所有可用标签。 - gabocalero
@gabocalero 所以,基本上要从头编写整个库,实现与FFmpegMediaMetadataRetriever基本相同的结果? - William Seemann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接