#multimedia-video #media-file #audio-video #ffmpeg #file-metadata #video

bin+lib metadata

为人类消费而设计的媒体文件元数据

8 个版本

0.1.9 2024年4月18日
0.1.8 2023年4月28日
0.1.7 2022年7月23日
0.1.6 2020年7月27日
0.1.2 2018年9月20日

多媒体 中排名 31

Download history 53/week @ 2024-04-29 40/week @ 2024-05-06 33/week @ 2024-05-13 106/week @ 2024-05-20 29/week @ 2024-05-27 39/week @ 2024-06-03 30/week @ 2024-06-10 34/week @ 2024-06-17 16/week @ 2024-06-24 26/week @ 2024-07-01 24/week @ 2024-07-08 23/week @ 2024-07-15 3/week @ 2024-07-22 70/week @ 2024-07-29 22/week @ 2024-08-05 25/week @ 2024-08-12

每月下载 123
用于 hashporn

MIT 许可证

60KB
1.5K SLoC

metadata

Homebrew crates.io Build status

metadata 是一个为人类消费而设计的媒体元数据解析器和格式化工具。由 FFmpeg 支持。

示例

$ metadata '20160907 Apple Special Event.m4v'
Title:                  Apple Special Event, September 2016 (1080p)
Filename:               20160907 Apple Special Event.m4v
File size:              6825755188 (6.83GB, 6.36GiB)
Container format:       MPEG-4 Part 14 (M4V)
Duration:               01:59:15.88
Pixel dimensions:       1920x800
Sample aspect ratio:    1:1
Display aspect ratio:   12:5
Scan type:              Progressive scan*
Frame rate:             29.97 fps
Bit rate:               7631 kb/s
    #0: Video, H.264 (High Profile level 4), yuv420p, 1920x800 (SAR 1:1, DAR 12:5), 29.97 fps, 7500 kb/s
    #1: Audio (und), AAC (LC), 48000 Hz, stereo, 125 kb/s
    #2: Subtitle (eng), EIA-608 closed captions

ffprobemediainfo(都是优秀的工具,但不是那么易于阅读)进行比较

ffprobe mediainfo

mediainfo 输出太多,即使在我的 85 行屏幕上也无法显示。现在尝试在 80x24 终端中使用它。)

如果需要,metadata 也可以打印标签,希望组织得更好

$ metadata -t '20160907 Apple Special Event.m4v'
Title:                  Apple Special Event, September 2016 (1080p)
Filename:               20160907 Apple Special Event.m4v
File size:              6825755188 (6.83GB, 6.36GiB)
Container format:       MPEG-4 Part 14 (M4V)
Duration:               01:59:15.88
Pixel dimensions:       1920x800
Sample aspect ratio:    1:1
Display aspect ratio:   12:5
Scan type:              Progressive scan*
Frame rate:             29.97 fps
Bit rate:               7631 kb/s
Streams:
    #0: Video, H.264 (High Profile level 4), yuv420p, 1920x800 (SAR 1:1, DAR 12:5), 29.97 fps, 7500 kb/s
    #1: Audio (und), AAC (LC), 48000 Hz, stereo, 125 kb/s
    #2: Subtitle (eng), EIA-608 closed captions
Tags:
    title:              Apple Special Event, September 2016 (1080p)
    artist:             Apple
    album:              Apple Keynotes (1080p)
    compilation:        0
    description:        iPhone 7, iPhone 7 Plus, AirPods, Apple Watch Series 2, Apple Watch Hermès and Apple Watch Nike+
    podcast:            1
    episode_uid:        104
    synopsis:           See Apple CEO Tim Cook and team introduce the iPhone 7, iPhone 7 Plus, AirPods, Apple Watch Series 2, Apple Watch Hermès and Apple Watch Nike+.
    genre:              Podcast
    gapless_playback:   0
    date:               2016-09-09T12:00:00Z
    rating:             0
    season_number:      0
    episode_sort:       0
    media_type:         0
  #2
    rotate:             0
    language:           eng

您还可以使用 -A, --all-tags 请求 所有 标签。出于简洁起见,这里未显示输出(那艘船已经起航,但仍然如此)。

历史

metadata 是我 Storyboard 项目中相同名称的 Python 工具的 Rust 版本。我开始 Storyboard 项目是为了复制某些专有媒体播放器生成的 Storyboard/缩略图图像,以便在网上论坛上方便共享媒体文件。虽然我早已停止在线共享媒体文件(因此也停止使用 storyboard),但我仍然喜欢从 Storyboard 努力中出现的命令行元数据格式化工具,并且一直用它来替代 ffprobemediainfo。多年以后,metadata 可以使用一些解耦和刷新,而我也可以学习一些 Rust,因此我开始这个移植。

由于这是我的 Rust 项目入门,代码的质量肯定很糟糕

安装

Homebrew

在 macOS 上,可以使用 Homebrew 安装 metadata

$ brew tap zmwangx/metadata https://github.com/zmwangx/metadata
$ brew install zmwangx/metadata/metadata

Ubuntu PPA

在 Ubuntu 18.04 和 20.04 上,可以从 ppa:zmwangx/metadata 安装 metadata

$ add-apt-repository ppa:zmwangx/metadata
$ apt update && apt install metadata

从源代码构建

需要 FFmpeg 开发头和 Rust 工具链。 支持 FFmpeg 3.4 及以后的版本。

在 macOS 上,以下命令应满足非 Rust 依赖项

$ brew install ffmpeg pkg-config

在 Debian/Ubuntu 上,以下命令应满足非 Rust 依赖项

$ apt install -y build-essential clang libavcodec-dev libavformat-dev libavutil-dev pkg-config

对于其他发行版也是类似的。

一旦安装了依赖项,基本构建命令是

$ make release

您应该在 dist//<version>/ 中找到 metadatametadata.1

用法

$ metadata -h
metadata 0.1.4
Zhiming Wang <[email protected]>
Media file metadata for human consumption.

USAGE:
    metadata [FLAGS] <FILE>...

FLAGS:
    -A, --all-tags    Print all metadata tags
    -c, --checksum    Include file checksum(s)
    -h, --help        Prints help information
    -s, --scan        Decode frames to determine scan type (slower, but determines interlaced more accurately; see man
                      page for details)
    -t, --tags        Print metadata tags, except mundane ones
    -V, --version     Prints version information

ARGS:
    <FILE>...    Media file(s)

更详细的信息请参阅手册页面

性能

metadata 运行速度快(比旧的 Python 工具有了大幅提升)。我在我的一个 USB 3.0 媒体驱动器上测试了一个包含约 1300 个视频文件的集合,metadata(与 xargs 结合使用)在 50 秒内处理完所有文件,平均每个文件不到 40ms。对于存储在原生 SSD 上的文件,可能更快。ffprobe 在测试中实际上运行得更慢,因为它一次只能接受一个文件。

错误

https://github.com/zmwangx/metadata/issues.

版权所有 (c) 2018-2020 王志明 [email protected]。MIT 许可证。

依赖项

~7–18MB
~238K SLoC