【问题标题】:How can I identify a video format in Python3?如何在 Python3 中识别视频格式?
【发布时间】:2012-01-11 09:49:43
【问题描述】:

我希望能够打开给定的文件,然后看到“这是一个 MP4 文件”、“这是一个 webm”文件,甚至是“这似乎不是一个有效的视频”

我在https://code.google.com/p/pyffmpeg/ 看到了 FFmpeg 包装器,但我没有在其中看到任何类型的 get_codec 函数。

想法?

【问题讨论】:

  • How to find the mime type of a file in python? 包含了几种实现此目的的技术,因此答案也将回答这个问题(即使从标题中可能并不明显)。
  • 获取 AVI/MKV 的 mime 类型将返回其 AVI/MKV,而不是内部数据流,因为 AVI/MKV 和许多其他格式是压缩流的容器。
  • @Geoffrey:嗯,“格式”这个词是模糊的。 webm 是一个容器,mp4 也是。但后来他写了“get_codec”,这是不同的东西。
  • @Colin:你能澄清一下你是指容器还是编解码器?
  • @LennartRegebro - 谢谢。大多数 mimetype 魔术都不起作用,因为它们都在没有任何文件名信息的情况下被保存。我需要进入文件本身来提取它。真的,知道具体的编解码器,比如 Divxv4 真的很有用。

标签: python python-3.x mp4 webm


【解决方案1】:

看看Hachoir。它“从多媒体文件中提取元数据”。

这是他们从 AVI 文件中提取元数据的示例:

$ hachoir-metadata pacte_des_gnous.avi
Common:
- Duration: 4 min 25 sec
- Comment: Has audio/video index (248.9 KB)
- MIME type: video/x-msvideo
- Endian: Little endian
Video stream:
- Image width: 600
- Image height: 480
- Bits/pixel: 24
- Compression: DivX v4 (fourcc:"divx")
- Frame rate: 30.0
Audio stream:
- Channel: stereo
- Sample rate: 22.1 KHz
- Compression: MPEG Layer 3

【讨论】:

  • 另一个选项是 python-magic(libmagic 包装器),它支持人类已知的几乎所有文件类型。对于更详尽的元数据,您还可以查看 python-mediainfo,它是 MediaInfo 的包装器,可以为几乎所有视频格式(以及其他格式)提供详尽的元数据。
【解决方案2】:

我的 python 有点生锈了,但是快速浏览一下模块就会发现这些。

获取编解码器 ID:

Track.CodecCtx.codec_id

获取编解码器本身(AVCodec):

Track.Codec

AVCodec 包含编解码器名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2018-10-21
    相关资源
    最近更新 更多