1 回答

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 流。我沒用過這個。
添加回答
舉報