1 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
您無法從瀏覽器的MediaRecorder API獲取 MP4 。我相信,您可以使用亞馬遜的 Elastic Transcoder 將 webm 轉(zhuǎn)換為 mp4。如果您還沒有這樣做,您還應(yīng)該嘗試將您的 webm / h.264 文件提供給 Rekognition。
正如您所意識(shí)到的,您的要求分為兩部分,裝箱和視頻。我們需要一些詞匯來詳細(xì)回答您的問題。
拳擊
首先是所謂的“裝箱”或容器格式。webm是一種基于Matroska的格式,又基于可擴(kuò)展二進(jìn)制標(biāo)記語言(EBML)。EBML 是為 Matroska 開發(fā)的。它類似于 XML,但占用更少的 RAM 和磁盤空間,因?yàn)樗鼛缀鯖]有那么冗長。?webm本身是一種開放且免版稅的媒體文件標(biāo)準(zhǔn)。
另一種裝箱格式是MPEG-4的。它幾乎與 Apple 的mov電影文件格式相同,稱為mp4格式。
WebRTC 有自己的適合數(shù)據(jù)報(bào)(而不是數(shù)據(jù)流)通信的裝箱方案。超出你的問題范圍。
編解碼器
那些 webm 或 mp4 盒子里有什么?音頻和視頻數(shù)據(jù)。(它們還可以根據(jù)需要包含其他時(shí)間同步的數(shù)據(jù)流,如字幕。)
h.264也稱為高級(jí)視頻編碼、MPEG-4 Part 10 或 AVC。
vp8,由谷歌收購的 On2 開發(fā)的開源和無專利編解碼器
h.265也稱為高效視頻編碼或 HEVC。
vp9,谷歌開發(fā)的最新開源和無專利編解碼器。
后兩個(gè)較新的編解碼器需要更多的計(jì)算周期來壓縮。而 h.265 仍然承受著巨大的專利負(fù)擔(dān)。所以瀏覽器和其他通用軟件通常使用前兩個(gè),h.265 和 vp8。
瀏覽器可以處理什么?
Chromium 瀏覽器(Google Chrome、Edge)和 Firefox 具有MediaRecorder API。他們可以生成包含音頻和/或視頻的 webm-boxed 數(shù)據(jù)流。它們不能生成 mp4 盒裝數(shù)據(jù)流。
來自這些瀏覽器的數(shù)據(jù)流可以(截至 2020 年 10 月)包含 VP8 或 H.264 編碼的視頻。對(duì)于視頻數(shù)據(jù),可用的 MIME 類型是
video/webm; codecs="vp8"
(對(duì)于 vp8)x-matroska/webm; codecs="avc1.42E01E"
或video/webm; codecs="avc1.42E01E"
H.264。
正式地說,對(duì)于使用 H.264 的視頻流,您應(yīng)該使用x-matroska/video
而不是webm/video
作為 MIME 類型,即使這兩種 MIME 類型都可以在瀏覽器中使用。webm 標(biāo)準(zhǔn)要求其視頻編解碼器為 vp8 或 vp9,因此video/webm; codecs="avc1.42E01E"
,從形式上講,不符合該標(biāo)準(zhǔn)。
Javascript 模塊
npm ebml可以將數(shù)據(jù)拆箱和裝箱到 webm 流中。我已經(jīng)在大規(guī)模生產(chǎn)中使用了它的拆箱功能。有用。
npm mp4-box-encoding可以將數(shù)據(jù)打包成 mp4 流。我沒用過這個(gè)。
添加回答
舉報(bào)