我正在使用multer-gridfs-storage
并将gridfs-stream
我的视频存储在后端(Express/Node)中。当我尝试检索要在我的前端(React)上播放的文件时,播放器拒绝识别源。
我正在使用 Video-React 来显示下载的视频。下载成功,我从后端得到一个二进制字符串,我将其转换为 Blob。
try{
fileBlob = new Blob([res.data], {type : res.headers['content-type']});
}catch(err){
console.log('Error converting to blob');
console.log(err);
}
这是我正在渲染的 Video-React 播放器
<Player
autoPlay
ref="player"
>
<source src={this.state.fileURL} />
<ControlBar autoHide={false} />
</Player>
然后我尝试了两种技术
readDataAsURL
let reader = new FileReader(); reader.onload = function(event){ //rThis is just a reference to the parent function this rThis.setState({fileURL: reader.result}, () => { rThis.refs.player.load(); }); } try{ reader.readAsDataURL(fileBlob); }catch(err){ console.log('Error trying readDataURL'); console.log(err); }
src
设置正确,但视频永远不会加载
URL.createObjectURL
let vidURL = URL.createObjectURL(fileBlob); rThis.setState({fileURL: vidURL}, () => { rThis.refs.player.load(); });
src
设置为blob:
url 但仍然没有
这是 Video-react 的问题还是我应该做其他事情?我可以查看的任何指向引用的指针也会有所帮助。我究竟做错了什么?dataURL 适用于图像,我检查过,但不适用于视频。