10

如何获得我需要 MediaSource.isTypeSupported使用 ffprobe/ffmpeg 传递给的 Mime 类型?

例如,在我的电脑上,返回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,我不知道是不是因为它不是例外参数,还是因为确实不支持视频。

4

3 回答 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所以我不确定它如何在其他格式上工作

于 2016-02-25T01:37:17.433 回答
2

还有其他方法可以将0x31637661零件转换为avc1.64001F?

编辑:因为我没有安装 Apple 的 XCode 并且无意安装 - 我发现 MP4Box 的 javascript 项目是找到正确格式的编解码器信息的最佳方式:

http://download.tsi.telecom-paristech.fr/gpac/mp4box.js/filereader.html

于 2016-03-04T07:30:17.293 回答
2

我意识到这是一个非常古老的问题,但我最近自己遇到了这个问题。我很难找到一种简单的方法来获取正确的 MIME 字符串,因此我编写了一个简单的Node.js CLI 程序来使用出色的mp4box.js来完成它。

你像这样使用它:

$ 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.

希望它会帮助别人。

于 2020-04-08T05:48:52.977 回答