为了账号安全,请及时绑定邮箱和手机立即绑定

将视频编解码器转换为 vp9 到 mp4?

将视频编解码器转换为 vp9 到 mp4?

明月笑刀无情 2023-05-11 14:14:16
我正在使用 js 中的 getUserMedia 函数录制视频let options = {mimeType: 'video/webm;codecs=vp9'};// here mediaStreamObj is stream returning from the getUserMedialet mediaRecorder = new MediaRecorder(mediaStreamObj, options);我希望编解码器是 h264 我也尝试过 video/webm;codecs=h264 在这里它给出 mime 类型作为 video/x-matroskavideo/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 一起用于视频分析?预期的模仿类型:您可以在此处查看 mime 类型https://www.metadata2go.com/
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

您无法从浏览器的MediaRecorder API获取 MP4 。我相信,您可以使用亚马逊的 Elastic Transcoder 将 webm 转换为 mp4。如果您还没有这样做,您还应该尝试将您的 webm / h.264 文件提供给 Rekognition。

正如您所意识到的,您的要求分为两部分,装箱和视频。我们需要一些词汇来详细回答您的问题。

拳击

首先是所谓的“装箱”或容器格式。webm是一种基于Matroska的格式,又基于可扩展二进制标记语言(EBML)。EBML 是为 Matroska 开发的。它类似于 XML,但占用更少的 RAM 和磁盘空间,因为它几乎没有那么冗长。 webm本身是一种开放且免版税的媒体文件标准。

另一种装箱格式是MPEG-4的。它几乎与 Apple 的mov电影文件格式相同,称为mp4格式。

WebRTC 有自己的适合数据报(而不是数据流)通信的装箱方案。超出你的问题范围。

编解码器

那些 webm 或 mp4 盒子里有什么?音频和视频数据。(它们还可以根据需要包含其他时间同步的数据流,如字幕。)

  • h.264也称为高级视频编码、MPEG-4 Part 10 或 AVC。

  • vp8,由谷歌收购的 On2 开发的开源和无专利编解码器

  • h.265也称为高效视频编码或 HEVC。

  • vp9,谷歌开发的最新开源和无专利编解码器。

后两个较新的编解码器需要更多的计算周期来压缩。而 h.265 仍然承受着巨大的专利负担。所以浏览器和其他通用软件通常使用前两个,h.265 和 vp8。

浏览器可以处理什么?

Chromium 浏览器(Google Chrome、Edge)和 Firefox 具有MediaRecorder API。他们可以生成包含音频和/或视频的 webm-boxed 数据流。它们不能生成 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。

正式地说,对于使用 H.264 的视频流,您应该使用x-matroska/video而不是webm/video作为 MIME 类型,即使这两种 MIME 类型都可以在浏览器中使用。webm 标准要求其视频编解码器为 vp8 或 vp9,因此video/webm; codecs="avc1.42E01E",从形式上讲,不符合该标准。

Javascript 模块

  • npm ebml可以将数据拆箱和装箱到 webm 流中。我已经在大规模生产中使用了它的拆箱功能。有用。

  • npm mp4-box-encoding可以将数据打包成 mp4 流。我没用过这个。


查看完整回答
反对 回复 2023-05-11
  • 1 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信