【发布时间】:2019-02-27 05:24:02
【问题描述】:
我正在使用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>
然后我尝试了两种技术
-
readDataAsURLlet 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.createObjectURLlet vidURL = URL.createObjectURL(fileBlob); rThis.setState({fileURL: vidURL}, () => { rThis.refs.player.load(); });
src 设置为 blob: 网址但仍然没有
这是 Video-react 的问题还是我应该做其他事情?我可以查看的任何指向引用的指针也会有所帮助。我究竟做错了什么? dataURL 适用于图像,我检查过,但不适用于视频。
【问题讨论】:
标签: node.js reactjs express video gridfs-stream