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
每月下载 123 次
用于 hashporn
60KB
1.5K SLoC
metadata
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
与 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 努力中出现的命令行元数据格式化工具,并且一直用它来替代 ffprobe
或 mediainfo
。多年以后,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>/ 中找到
metadata
和 metadata.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