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() 的正确“编解码器”值是什么?
下面是一个简短的 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) 和其他编解码器。其他容器格式可能有效,也可能无效。
| 归档时间: |
|
| 查看次数: |
2707 次 |
| 最近记录: |