我正在用js和选项录制getUserMedia函数的视频。
let options = {mimeType: 'video/webm;codecs=vp9'};
// here mediaStreamObj is stream returning from the getUserMedia
let mediaRecorder = new MediaRecorder(mediaStreamObj, options);我希望编解码器是h264,我也尝试了视频/webm;codecs =h 264,在这里它将mime类型作为视频/x-matroska。

视频/MP4;编解码器=H 264-不支持抛出错误
我需要mimeType作为mp4和编解码器h264。
因为我正在做一个视频分析(亚马逊识别)。我希望在php中使用startLabelDetection来检测视频中的标签,而亚马逊只接受h264格式的视频。
https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-rekognition-2016-06-27.html#startlabeldetection
有谁可以用js(首选)或php将视频mime类型转换为mp4,这样我就可以将它与一起用于视频分析了吗?
预期mimetype:

您可以在这里检查mime类型,https://www.metadata2go.com/
发布于 2020-10-22 11:54:07
博士您不能从浏览器的MediaRecorder API中获取MP4。我相信,你可以让亚马逊的弹性代码转换器将webm转换成mp4。如果您还没有这样做,您还应该尝试将webm / h.264文件提供给Rekognition。
正如您已经意识到的,您的需求有两个部分,装箱和视频。我们需要一点词汇来详细回答你的问题。
拳击
首先是所谓的“装箱”或容器格式。https://www.webmproject.org/about/是一种基于马特罗斯卡的格式,反过来基于可扩展二进制标记语言 (EBML)。EBML是为Matroska开发的。它类似于XML,但占用的RAM和磁盘空间更少,因为它几乎没有那么冗长。https://www.webmproject.org/about/本身是一个开放的、免费的媒体文件标准。
另一种装箱格式是MPEG-4的,它几乎与苹果的mov电影文件格式相同,被称为mp4格式。
WebRTC有适合于数据报(而不是数据流)通信的装箱方案。不在你的问题范围之内。
编解码器
这些webm或mp4的盒子里有什么?音频和视频数据。(它们还可以根据需要包含其他时间同步数据流,如标题。)
后两个较新的编解码器需要更多的计算周期来压缩。而h.265仍然面临着巨大的专利负担。因此浏览器和其他通用软件通常使用前两种,即h.265和vp8。
浏览器能处理什么?
铬浏览器(Google,Edge)和火狐都有MediaRecorder API。它们可以生成包含音频和/或视频的webm盒装数据流。它们不能生成MP4盒式数据流。
这些浏览器的数据流(截至2020年10月)可以包含VP8或H.264编码的视频。对于视频数据,可用MIME类型是
video/webm; codecs="vp8" (用于vp8)x-matroska/webm; codecs="avc1.42E01E"或video/webm; codecs="avc1.42E01E"用于H.264。从形式上讲,您应该使用x-matroska/video而不是webm/video作为使用H.264的视频流的MIME类型,尽管这两种MIME类型都可以在浏览器中工作。webm标准要求其视频编解码器要么是vp8,要么是vp9,因此从形式上讲,video/webm; codecs="avc1.42E01E"不符合该标准。
Javascript模块
https://stackoverflow.com/questions/64348180
复制相似问题