#exif #nom #video #parser #jpeg #metadata #image

nom-exif

使用纯Rust编写的Exif/metadata解析库,支持JPEG/HEIF/HEIC图像和MOV/MP4视频

14个版本 (稳定)

1.4.0 2024年8月24日
1.3.0 2024年7月25日
1.2.0 2024年2月23日
0.2.0 2024年2月18日
0.1.1 2024年2月15日

245解析器实现中排名

Download history 230/week @ 2024-05-03 187/week @ 2024-05-10 250/week @ 2024-05-17 337/week @ 2024-05-24 203/week @ 2024-05-31 215/week @ 2024-06-07 122/week @ 2024-06-14 172/week @ 2024-06-21 238/week @ 2024-06-28 689/week @ 2024-07-05 796/week @ 2024-07-12 272/week @ 2024-07-19 359/week @ 2024-07-26 199/week @ 2024-08-02 151/week @ 2024-08-09 67/week @ 2024-08-16

每月917次下载
用于phorg

自定义许可

175KB
4K SLoC

Nom-Exif

crates.io Documentation LICENSE CI

使用nom编写的纯Rust Exif/metadata解析库。

支持的文件类型

  • 图像
    • JPEG
    • HEIF/HEIC
  • 视频
    • MOV
    • MP4

特性

  • 适当情况下零拷贝:尽可能使用借用和切片代替复制。
  • 最小化I/O操作:当元数据存储在大文件的末尾/中间(例如,MOV/HEIC文件)时,使用Seek而不是Read来快速定位元数据的位置。
  • 按需付费:在提取Exif数据时,仅解析与指定Exif标签相对应的信息,以减少处理大量文件时的开销。
  • 健壮性和稳定性:通过长期的Fuzz测试,并在测试期间发现的大量崩溃问题已被修复。感谢@sigaloid指出这一点!

使用方法

CLI工具rexiftool

正常输出

cargorun --examplerexiftool testdata/meta.mov:

com.apple.quicktime.make                => Apple
com.apple.quicktime.model               => iPhone X
com.apple.quicktime.software            => 12.1.2
com.apple.quicktime.location.ISO6709    => +27.1281+100.2508+000.000/
com.apple.quicktime.creationdate        => 2019-02-12T15:27:12+08:00
duration                                => 500
width                                   => 720
height                                  => 1280

JSON转储

cargorun --功能json_dump --examplerexiftool ---j testdata/meta.mov:

{
  "height": "1280",
  "duration": "500",
  "width": "720",
  "com.apple.quicktime.creationdate": "2019-02-12T15:27:12+08:00",
  "com.apple.quicktime.make": "Apple",
  "com.apple.quicktime.model": "iPhone X",
  "com.apple.quicktime.software": "12.1.2",
  "com.apple.quicktime.location.ISO6709": "+27.1281+100.2508+000.000/"
}

变更日志

CHANGELOG.md

依赖

~4.5–6.5MB
~115K SLoC