14 个版本 (4 个破坏性更新)

0.6.0 2023年5月24日
0.5.2 2023年5月16日
0.4.5 2023年5月14日
0.3.1 2022年9月15日
0.2.1 2022年8月17日

#5 in #webm

Download history 37/week @ 2024-03-28 22/week @ 2024-04-04

每月125 次下载

MIT/Apache

71KB
1.5K SLoC

mkvdump

coverage test Crates.io

Matroska/WebM 文件的命令行调试工具。它以 JSON 或 YAML 格式显示 Matroska 文件的内部所有元素。

示例 YAML 输出
- id: EBML
  header_size: 5
  size: 36
  children:
  - id: EBMLVersion
    header_size: 3
    size: 4
    value: 1
  - id: EBMLReadVersion
    header_size: 3
    size: 4
    value: 1
  - id: EBMLMaxIDLength
    header_size: 3
    size: 4
    value: 4
  - id: EBMLMaxSizeLength
    header_size: 3
    size: 4
    value: 8
  - id: DocType
    header_size: 3
    size: 7
    value: webm
  - id: DocTypeVersion
    header_size: 3
    size: 4
    value: 2
  - id: DocTypeReadVersion
    header_size: 3
    size: 4
    value: 2
- id: Segment
  header_size: 12
  size: Unknown
  children:
  - id: Void
    header_size: 9
    size: 229
    value: null
  - id: Info
    header_size: 5
    size: 44
    children:
    - id: TimestampScale
      header_size: 4
      size: 7
      value: 1000000
    - id: MuxingApp
      header_size: 3
      size: 16
      value: Lavf58.29.100
    - id: WritingApp
      header_size: 3
      size: 16
      value: Lavf58.29.100
  - id: Tracks
    header_size: 5
    size: 101
    children:
    - id: TrackEntry
      header_size: 9
      size: 96
      children:
      - id: TrackNumber
        header_size: 2
        size: 3
        value: 1
      - id: TrackUID
        header_size: 3
        size: 4
        value: 1
      - id: FlagLacing
        header_size: 2
        size: 3
        value: 0
      - id: Language
        header_size: 4
        size: 7
        value: und
      - id: CodecID
        header_size: 2
        size: 7
        value: V_AV1
      - id: TrackType
        header_size: 2
        size: 3
        value: video
      - id: DefaultDuration
        header_size: 4
        size: 8
        value: 41708333
      - id: Video
        header_size: 9
        size: 32
        children:
        - id: PixelWidth
          header_size: 2
          size: 4
          value: 1280
        - id: PixelHeight
          header_size: 2
          size: 4
          value: 720
        - id: Colour
          header_size: 3
          size: 15
          children:
          - id: Range
            header_size: 3
            size: 4
            value: broadcast range
          - id: ChromaSitingHorz
            header_size: 3
            size: 4
            value: left collocated
          - id: ChromaSitingVert
            header_size: 3
            size: 4
            value: half
      - id: CodecPrivate
        header_size: 3
        size: 20
        value: '[81 05 0c 00 0a 0b 00 00 00 2d 4c ff b3 df ff 98 04]'
  - id: Tags
    header_size: 5
    size: 61
    children:
    - id: Tag
      header_size: 10
      size: 56
      children:
      - id: Targets
        header_size: 10
        size: 10
        children: []
      - id: SimpleTag
        header_size: 10
        size: 36
        children:
        - id: TagName
          header_size: 3
          size: 10
          value: ENCODER
        - id: TagString
          header_size: 3
          size: 16
          value: Lavf58.29.100
  - id: Cluster
    header_size: 6
    size: 2679
    children:
    - id: Timestamp
      header_size: 2
      size: 3
      value: 0
    - id: SimpleBlock
      header_size: 2
      size: 45
      value:
        track_number: 1
        timestamp: 0
        keyframe: true
    - id: SimpleBlock
      header_size: 2
      size: 59
      value:
        track_number: 1
        timestamp: 42
    - id: SimpleBlock
      header_size: 2
      size: 32
      value:
        track_number: 1
        timestamp: 83
    # ...

它有什么用途?

此工具类似于 mp4dump,但用于 Matroska 文件。它可能有助于

  • 快照测试:您可以保存 mkvdump 的输出,用于生成的 Matroska 资产,并在可读的快照测试中使用。
  • 了解 EBML/Matroska/WebM:使用此工具,您可以看到 Matroska 文件的结构。我也通过编写此工具学到了 😊

获取 mkvdump

Debian 软件包

Ubuntu 用户(>= 20.04)可以通过在 发布页面 中可用的 DEB 软件包安装 mkvdump。

Homebrew

Linux 和 macOS 上的 x86_64 设备用户可以通过 Homebrew tap 安装 mkvdump。

$ brew install cadubentzen/mkvdump/mkvdump

macOS 上的 M1 或 M2 设备用户需要使用

$ brew install --build-from-source cadubentzen/mkvdump/mkvdump

Cargo

如果您已安装 cargo-binstall,您可以使用以下命令安装 mkvdump:

$ cargo binstall mkvdump

否则,您可以通过从源代码构建来安装:

$ cargo install mkvdump

Docker

要从 Docker Hub 拉取最新的 mkvdump

$ docker pull cadubentzen/mkvdump

GitHub 上的 软件包 也可通过

$ docker pull ghcr.io/cadubentzen/mkvdump

镜像为多架构,支持 linux/amd64linux/386linux/arm64linux/arm/v7linux/arm/v6

运行容器

假设宿主机上的 Matroska 文件位于 /host-path/sample.mkv。您可以通过以下命令,通过挂载卷来运行 mkvdump:

$ docker run -v /host-path:/media cadubentzen/mkvdump /media/sample.mkv

预构建的二进制文件

发布页面 下载预构建的二进制文件。以下目标有二进制文件:

  • Linux
    • 使用 musl 静态链接:x86_64x86aarch64armv7larmv6l
    • 使用 GNU libc:x86_64x86(基于 Ubuntu 20.04 构建)
  • macOS
    • x86_64aarch64 (>= macOS 11 Big Sur)
  • Windows
    • x86_64x86,使用 MSVC 和 MinGW

许可证

© 2022 Carlos Bentzen [email protected]

该项目受以下任一许可证的许可:

任选其一。

该项目的 SPDX 许可证标识符为 MIT OR Apache-2.0

依赖项

~7MB
~136K SLoC