Hp9*_*p93 23 firefox google-chrome mime-types web-mediarecorder
我在哪里可以找到被支持的所有MIME类型的列表Firefox或Chrome?到目前为止我见过的所有例子video/webm都只使用.
exa*_*red 30
我还没有看到任何类型的Firefox综合列表,但我已经设法找到一些东西(通过Google的网页更新部分的MediaRecorder API上的帖子)链接到这个测试集,似乎可以解释一些事情.
从本质上讲,它看起来像是(在撰写本文时)Chrome中视频/音频的已接受MIME类型:
视频/ X-Matroska的;编解码器= AVC1
音频/ WEBM
(编辑2019-02-10:更新为包括brianchirls的链接查找)
Mir*_*ili 17
只需执行以下代码片段(基于@MillenniumFennec的答案+ audio+ 删除重复项 + 一些其他改进 + 来自MDN的完整列表):
function getAllSupportedMimeTypes(...mediaTypes) {
if (!mediaTypes.length) mediaTypes.push('video', 'audio')
const CONTAINERS = ['webm', 'ogg', 'mp3', 'mp4', 'x-matroska', '3gpp', '3gpp2', '3gp2', 'quicktime', 'mpeg', 'aac', 'flac', 'x-flac', 'wave', 'wav', 'x-wav', 'x-pn-wav', 'not-supported']
const CODECS = ['vp9', 'vp9.0', 'vp8', 'vp8.0', 'avc1', 'av1', 'h265', 'h.265', 'h264', 'h.264', 'opus', 'vorbis', 'pcm', 'aac', 'mpeg', 'mp4a', 'rtx', 'red', 'ulpfec', 'g722', 'pcmu', 'pcma', 'cn', 'telephone-event', 'not-supported']
return [...new Set(
CONTAINERS.flatMap(ext =>
mediaTypes.flatMap(mediaType => [
`${mediaType}/${ext}`,
]),
),
), ...new Set(
CONTAINERS.flatMap(ext =>
CODECS.flatMap(codec =>
mediaTypes.flatMap(mediaType => [
// NOTE: 'codecs:' will always be true (false positive)
`${mediaType}/${ext};codecs=${codec}`,
]),
),
),
), ...new Set(
CONTAINERS.flatMap(ext =>
CODECS.flatMap(codec1 =>
CODECS.flatMap(codec2 =>
mediaTypes.flatMap(mediaType => [
`${mediaType}/${ext};codecs="${codec1}, ${codec2}"`,
]),
),
),
),
)].filter(variation => MediaRecorder.isTypeSupported(variation))
}
// To get all mime types, use: getAllSupportedMimeTypes()
console.log('Video mime types:')
console.log(getAllSupportedMimeTypes('video'))
console.log('Audio mime types:')
console.log(getAllSupportedMimeTypes('audio'))Run Code Online (Sandbox Code Playgroud)
Fen*_*nec 15
我在 my 中创建了这个小函数utils.js以获得最佳支持的编解码器,支持多种可能的命名变体(例如:firefox支持video/webm;codecs:vp9但不支持video/webm;codecs=vp9
您可以VIDEO_CODECS按优先级对数组进行重新排序,因此您始终可以使用下一个最佳支持的编解码器。
function getSupportedMimeTypes() {
const VIDEO_TYPES = [
"webm",
"ogg",
"mp4",
"x-matroska"
];
const VIDEO_CODECS = [
"vp9",
"vp9.0",
"vp8",
"vp8.0",
"avc1",
"av1",
"h265",
"h.265",
"h264",
"h.264",
"opus",
];
const supportedTypes = [];
VIDEO_TYPES.forEach((videoType) => {
const type = `video/${videoType}`;
VIDEO_CODECS.forEach((codec) => {
const variations = [
`${type};codecs=${codec}`,
`${type};codecs:${codec}`,
`${type};codecs=${codec.toUpperCase()}`,
`${type};codecs:${codec.toUpperCase()}`,
`${type}`
]
variations.forEach(variation => {
if(MediaRecorder.isTypeSupported(variation))
supportedTypes.push(variation);
})
});
});
return supportedTypes;
}
const supportedMimeTypes = getSupportedMimeTypes();
console.log('Best supported mime types by priority : ', supportedMimeTypes[0])
console.log('All supported mime types ordered by priority : ', supportedMimeTypes)Run Code Online (Sandbox Code Playgroud)
对于Firefox,可以在MediaRecorder.cpp使用中找到并确认接受的mimetypesMediaRecorder.isTypeSupported(...)
例:
21:31:27.189 MediaRecorder.isTypeSupported('video/webm;codecs=vp8')
21:31:27.135 true
21:31:41.598 MediaRecorder.isTypeSupported('video/webm;codecs=vp8.0')
21:31:41.544 true
21:32:10.477 MediaRecorder.isTypeSupported('video/webm;codecs=vp9')
21:32:10.431 false
21:31:50.534 MediaRecorder.isTypeSupported('audio/ogg;codecs=opus')
21:31:50.479 true
21:31:59.198 MediaRecorder.isTypeSupported('audio/webm')
21:31:59.143 false
Run Code Online (Sandbox Code Playgroud)
MediaRecorder 对常见音频编解码器的支持:
MediaRecorder.isTypeSupported('audio/webm;codecs=opus'); // true on chrome, true on firefox => SO OPUS IT IS!
MediaRecorder.isTypeSupported('audio/ogg;codecs=opus'); // false on chrome, true on firefox
MediaRecorder.isTypeSupported('audio/webm;codecs=vorbis'); // false on chrome, false on firefox
MediaRecorder.isTypeSupported('audio/ogg;codecs=vorbis'); // false on chrome, false on firefox
Run Code Online (Sandbox Code Playgroud)
Firefox 在第一个实现中使用 Vorbis 进行录音,但此后转移到 Opus。
所以 OPUS 它是!
这可能会引起兴趣:
| 归档时间: |
|
| 查看次数: |
10922 次 |
| 最近记录: |