获取MediaSource.isTypeSupported的MIME类型

10

我该如何获取Mime类型需要传递给MediaSource.isTypeSupported的信息,使用ffprobe/ffmpeg?

例如,在我的计算机上,这将返回true

MediaSource.isTypeSupported('video/mp4; codecs="avc1.64000d,mp4a.40.2"')

虽然那不会

MediaSource.isTypeSupported('video/mp4')

我不确定如何获取与给定视频对应的avc1.64000d,mp4a.40.2部分。这里是一个更大的列表,显示了此部分可能的外观。

ffprobe -show_streams -i video.mp4返回许多有趣的信息,包括

codec_type=video
codec_time_base=1/40
codec_tag_string=avc1
codec_tag=0x31637661 

codec_type=audio
codec_time_base=1/48000
codec_tag_string=mp4a
codec_tag=0x6134706d

我不确定是否应该选择'video/mp4; codecs="avc1.0x31637661,mp4a.0x6134706d"',因为它返回false,我不知道这是因为它不是期望的参数还是因为视频确实不受支持。

3个回答

9
使用 Bento4 ,我可以通过以下方式获取Mime类型:
mp4info video.mp4 | grep Codec

那将返回类似于

Codecs String: avc1.64001F
Codecs String: mp4a.40.2

然后执行

MediaSource.isTypeSupported('video/mp4; codecs="avc1.64001F,mp4a.40.2"')

这会返回true :)

Bento4专注于mp4,所以我不确定它在其他格式上的工作方式。


3

我知道这是一个非常老的问题,但最近我自己遇到了这个问题。我很难找到一个简单的方法来获取正确的MIME字符串,所以我使用优秀的mp4box.js编写了一个简单的Node.js CLI程序来完成它。

您可以像这样使用它:

$ npx get-video-mime your-video-file.mp4

[22:28:37] Getting MIME for 1 file(s)...
[22:28:38] MIME for your-video-file.mp4 detected as: video/mp4; codecs="hev1.1.6.L120.90,mp4a.6b"; profiles="isom,iso2,mp41"
[22:28:38] Finished processing all files.

希望这能对其他人有所帮助。


2

1
在OSX上安装Bento4(xbuild.proj)需要下载苹果的Xcode,文件大小高达4.4GB!经过更多的搜索,看起来MP4BOX可以输出HTML5视频标签所需的正确Mime/编解码格式。他们甚至有一个JavaScript版本和一个GUI浮动界面 https://gpac.wp.mines-telecom.fr/mp4box/。 - FFish
哦,是的,我已经有Xcode了,所以没有注意到。是的,MP4BOX看起来也很不错。如果你找到如何使用MP4BOX做到这一点,请随时分享你的回应 :) - Guig
我发现结果是相同的(对于那个和其他类似片段字节位置等的东西)。他们的用户界面很好,可以检查事物并进行实验,但要从脚本中获取这些数据还有更多工作要做。我认为他们有一个Java库应该可以完成这项工作,但我已经有一段时间没有接触过Java了! - Guig
谢谢!那么你同意对于OP的问题(只需获取“'video/mp4; codecs="avc1.64000d,mp4a.40.2"'”信息),这是迄今为止最快,最简单的解决方案,对吗?我的意思是不需要安装额外的软件,只需从浏览器运行JS即可从本地文件中获取编解码器信息,以便在HTML5视频标签中使用它们。 - FFish
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接