我正在通过js选项中的getUserMedia函数录制视频
let options = {mimeType: 'video/webm;codecs=vp9'};
// here mediaStreamObj is stream returning from the getUserMedia
let mediaRecorder = new MediaRecorder(mediaStreamObj, options);
我希望编解码器为h264,我也尝试过 video / webm; codecs = h264 在这种情况下,它使mime类型为video / x-matroska
video / mp4; codecs = h264-不支持引发错误
我需要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,以便我可以将其与Amazon rekognition一起用于视频分析?
预期的模仿类型:
上查看哑剧类型。答案 0 :(得分:1)
tl; dr 您无法从浏览器的MediaRecorder APIs获取MP4。我相信,您可以使用Amazon的Elastic Transcoder将webm转换为mp4。如果尚未将webm / h.264文件也提供给Rekognition,则应该这样做。
您已经意识到,您的要求包括拳击和视频两部分。我们需要一些词汇来详细回答您的问题。
首先是所谓的“装箱”或容器格式。 webm是一种基于Matroska的格式,依次基于Extensible Binary Markup Language(EBML)。 EBML是为Matroska开发的。它就像XML,但占用的RAM和磁盘空间更少,因为它并不那么冗长。 webm本身是一种开放的,免版税的媒体文件标准。
另一种拳击格式是MPEG-4。它几乎与Apple的 mov 电影文件格式相同,称为 mp4 格式。
WebRTC具有适合于数据报(而不是数据流)通信的自己的装箱方案。超出您的问题范围。
那些webm或mp4盒中的内容是什么?音频和视频数据。 (根据需要,它们还可以包含其他时间同步的数据流,例如字幕)。
后两种更新的编解码器需要更多的计算周期才能进行压缩。而且h.265仍然承受着巨大的专利负担。因此,浏览器和其他通用软件通常使用前两个h.265和vp8。
铬浏览器(Google Chrome,Edge)和Firefox使用MediaRecorder API。他们可以生成包含音频和/或视频的webm装箱的数据流。他们无法生成mp4装箱的数据流。
这些浏览器的数据流可以(截至2020年10月)包含VP8或H.264编码的视频。对于视频数据,available MIME types是
video/webm; codecs="vp8"
(适用于vp8)x-matroska/webm; codecs="avc1.42E01E"
或video/webm; codecs="avc1.42E01E"
用于H.264。通常来说,对于使用H.264的视频流,您应该使用x-matroska/video
而不是webm/video
作为MIME类型,即使这两种MIME类型都可以在浏览器中使用。 webm标准要求其视频编解码器为vp8或vp9,因此video/webm; codecs="avc1.42E01E"
从形式上来讲不符合该标准。