HTML5: Play video from stored binary string

喜夏-厌秋 提交于 2019-12-04 13:36:44

问题


I am trying to read the contents of a video file as a binary string using the FileReader.readAsBinaryString(Blob|File) as shown in the example http://www.html5rocks.com/en/tutorials/file/dndfiles/#toc-reading-files and then store and play the video.

I tried it using the below (with a webm video file),but get a "Video format or MIME type not supported."

function readBlob (file, startByte, endByte, callback) {
                    console.log('readBlob():', file, startByte, endByte);

                    var reader = new FileReader();
                    reader.onloadend = function (evt) {
                        if (evt.target.readyState == FileReader.DONE) {
                            callback(evt.target.result);
                            var player = document.getElementById('player');
                            player.src = "data:video/webm;base64,"+evt.target.result;
                            player.load();
                            player.play();
                        }
                    }
                    var blob = file.slice(startByte, endByte);
                    reader.readAsBinaryString(blob);
                }

Does anyone know if it is possible to read a video file (one supported by the browser being used) as a binary string and play it in the browser HTML5 video player?

TIA


回答1:


Your problem might be with the player.src

player.src = "data:video/webm;base64,"+evt.target.result;

It is expecting the data to be in base64 but you're giving it a binary string.

Try encoding it to base64 using btoa

player.src = "data:video/webm;base64,"+btoa(evt.target.result);



回答2:


How about FileReader.readAsDataURL(Blob|File) ?
It is explained in your html5rocks-link as well.



来源:https://stackoverflow.com/questions/16251136/html5-play-video-from-stored-binary-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!