MediaRecorder網上示例缺陷


網上看到了MediaRecorder用法示例,沒想到用的時候發現了一點bug,已友情提示該作者,並感謝他分享源碼

示例地址:https://wendychengc.github.io/media-recorder-video-canvas/cameracanvas.html

開源地址:https://wendychengc.github.io/media-recorder-video-canvas/cameracanvas.html

該示例有bug:
bug現象:除第一次錄制后的下載文件,每次下載的文件都是第一次錄制的內容
                用windowsMediaPlay播放器和用win10的電影和電視播放器打開時,進度條無法拉動,除第一次錄制自動下載后的視頻文件,其它視頻文件一直播放第一次錄制后下載的視頻內容,而不是當次
                用PotPlayer播放器播放時,默認播放得也是第一次下載的視頻內容,但是當拖動滾動條到盡頭重新播放時,播放得竟然是當次錄制的視頻內容,這個播放器我無法理解 ,盡管我把其它所有錄制的視頻都刪掉了,它播放同一個視頻竟然有兩個視頻的效果。

bug原因:在每次錄制前存放blob的數組並沒有清空,而且錄制結束后的下載方法里使用的是 allChunks這個數組,因為第二次錄制時沒有清空,因此它實際上保存的是第一次和第二次兩次的blob的總共數組,邏輯上視頻會一直播放第一次+第二次下載的內容,但是實際上視頻會一直播放第一次的內容,原因是第二次錄制時雖然沒有清空allChunks這個數組,但是記錄了第二次錄制整個過程的blob的總個數(通過console.log(allChunks)查看),所以雖然播放的是第一次+第二次錄制的視頻內容,但是播放blob的個數是第二次記錄的個數,因此當第二次錄制的時間比第一次長很多時(blob個數比第一次多),是可以在播放中途看到第二次的內容的,如果錄制時間相同(blob個數相同),則播放的完全是第一次的內容。
bug解決:在每次錄制前將allChunks數組清空allChunks.length=0; ,不推薦allChunks=[];這種寫法。

1 //開始錄制
2 startBtn.onclick = function (e) {
3  allChunks.length=0; //用於解決示例的bug:除第一次錄制后的下載文件,每次下載的文件播放得都是第一次錄制的內容
4  recorder.start(10);/
5  startBtn.disabled = true;
6  pauseBtn.disabled = false;
7  resumeBtn.disabled = true;
8  stopBtn.disabled = false;
9 };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM