使用node.js fs.readStream()在电子HTML5视频播放器中播放本地视频文件

时间:2019-07-12 15:01:54

标签: javascript node.js electron

我正在开发一个视频播放器应用程序,该应用程序使用node.js和electronic播放本地文件系统中的视频(.mp4)(因此,我使用的是chrome5的html5视频播放器)。

播放当前大于2GB的视频似乎是我目前的问题。

我曾经使用fs.readFileSync读取本地视频文件,并将该Blob传递给视频播放器,如以下代码所示:

Throwable.getCause()

这确实适用于小于2GB的视频文件。大于2GB的文件会触发以下错误:

this.videoNode = document.querySelector('video');
const file: Buffer = fs.readFileSync(video.previewFilePath);
this.fileURL = URL.createObjectURL(new Blob([file]));
this.videoNode.src = this.fileURL;

我认为解决方案是使用fs.readStream()将ReadStream传递给html5视频播放器。不幸的是,我找不到任何有关如何将此流传递到视频播放器的文档。

1 个答案:

答案 0 :(得分:0)

正如主题所说,您正在使用电子,从上面的评论中可以明显看出您正在避免使用服务器。看起来,如果您只是创建一个离线视频播放器,那么您只会让事情变得复杂。你为什么要创建一个缓冲区,然后创建一个新的 url?您可以通过简单地获取视频路径并将其用作视频对象的 src 属性来实现这一点。 您的代码应如下所示-

var path="path/to/video.mp4"; //you can get it by simple input tag with type=file or using electron dialogs
this.videoNode = document.querySelector('video');//it should be a video element in your html
this.videoNode.src=path;
this.videoNode.oncanplay=()=>{
  //do something...
}

这将处理完整的文件,鉴于 videoNode 是 html 文件中的视频元素,因此您无需禁用 webPreference。

你可以看看这个使用电子制作的开源媒体播放器项目

https://github.com/HemantKumar01/ElectronMediaPlayer

免责声明:我是上述项目的所有者,诚邀所有人参与