如何确定文件中使用的视频编解码器

sco*_*ttb 6 html video mp4

HTML5 标签向 JavaScript 公开 canPlayType() 方法。它采用 MIME 类型来播放媒体,并返回浏览器是否认为它实际上可以播放媒体的指示。

不幸的是,大多数常见媒体类型(例如“video/mp4”)都是容器类型,媒体类型本身不足以确定内容是否可以实际播放。对此,RFC 4281 定义了一个“codecs”参数,可以将其添加到 MIME 类型中以标识特定的编解码器。

因此,例如,“video/3gpp2; codecs='mp4v.20.9, mp4a.E1'”的类型是(根据 RFC)“MPEG-4 Visual Simple Profile Level 0 plus 13K voice”。

我找到了很多地方,告诉我如果我知道编解码器,应该使用什么值,但我经常发现自己收到来源不明的视频文件 - 我所知道的是它有一个 .mp4 文件类型。

如何从实际文件中确定 canPlayType() 的正确“编解码器”值是什么?

qff*_*qff 0

下面是一个简短的 Python 代码片段,可以为您提供包含 h.264 视频的 MP4 文件的答案:

import re
import sys

with open(sys.argv[1], 'rb') as f:
    match = re.search(b'\x61\x76\x63\x43\x01', f.read())
    if not match:
        print('No avc1-bytestring found. File is likely not an .mp4-file containing h.264 video.')
        exit()
    f.seek(0)
    f.seek(match.end())
    print('avc1.' + f.read(3).hex())
Run Code Online (Sandbox Code Playgroud)

如果将其保存到,mp4-codec-reader.py您可以获得 h.264 编解码器,如下所示:

python mp4-codec-reader.py <YOUR_FILE.mp4>
Run Code Online (Sandbox Code Playgroud)

请注意,这不适用于 h.265 (avc2) 和其他编解码器。其他容器格式可能有效,也可能无效。