使用RecordRTC官網的Demo,錄製同樣爲30s的視頻,相同的運動畫面,採用不同編碼方式,每個視頻錄製兩遍,對比視頻體積。
使用RecordRTC錄製視頻時支持的格式:
vp8,vp9,mkv,h26四,使用whammy編碼
通過mimeType參數設定,具體參數對應格式可以參考RecordRTC官網
經whammy編碼器輸出的視頻文件無法在edge中使用<video>標籤播放,也無法通過videojs播放 ,無法在potplayer之中打開,甚至無法通過hankbrake識別,原因可能是代碼過於老舊,應避免使用。
對比結果:
default 3.03m 3.23m
h26四 3.05m 3.11m
mkv 3.10m 3.13m
vp八 9.25m 9.46m
vp9 7.53m 7.03m
whammy 5.04m 8.13m
在potplayer之中打開之後發現h26四/mkv/default顯示的都是h26四格式,區別可能就是封裝格式不同,default爲webm擴展名,h26四爲mp4,mkv爲mkv。
vp8和vp9的擴展名都是mp4,potplayer之中打開則分別顯示編碼方案爲vp8和vp9。
進行對比時使用的軟件或庫的版本號:
edge 版本 115.0.1901.203 (正式版本) (六十4 位)
Video.js 8.5.2 videojs/video.js GitHub
RecordRTC 5.6.2 muaz-khan/RecordRTC GitHub
potplayer 230707(1.7.21953)
有些瀏覽器支持mimeType = “video/mpeg”,但是edge不支持。mimeType = “video/webm”時,文檔裏寫的是默認使用vp8編碼,測試之後發現使用的是h26四編碼.
vp8和vp9在potplayer播放時有控制條,但時間顯示有問題,其他視頻在potplayer之中播放沒有控制條。
輸出的所有視頻,win10自帶媒體播放器都無法播放,且無法顯示縮略圖.
使用ffmpeg轉碼成mpeg-4看下面的代碼,演示了怎樣通過攝像頭錄像並保存爲mpeg編碼的mp4.
這樣轉碼之後的mp4,可以在媒體播放器中播放並有縮略圖,但是瀏覽器不支持(無法通過edge和videojs播放)
該項目使用ffmpeg-asm.js轉碼,但這個文件很大,有18m,需要先下載下來再解碼,而且下載鏈接還失效了.
可以將該項目下載到本地,然後開啓一個本地server,類似http://localhost:5173/ 這樣,將ffmpeg-asm.js放在服務根目錄,再修改workerPath爲http://localhost:5173/ffmpeg_asm.js
這樣就可以正常使用了,而且下載ffmpeg-asm.js的速度更快,不過這樣操作之後merging-wav-and-webm-into-mp4.html這個demo依然不可用.
而且這樣轉碼,時間比較長,轉碼之後的mp4也比h26si體積更大.僅供參考