节点和电子中的高效媒体传输

作为Electron的一个玩具项目,我正试图重写一个WPF媒体pipe理应用程序,并希望能够加速通过节点的fs加载媒体(即图像,但后来的video)的最佳方式,并获得它进入电子渲染的网页。

目前我已经有了使用Base64编码的基本工作设置:

 function getImage(imageID, success) { fs.readFile('f:/pictures/2.jpg', function(err, data) { if (err) throw err; success(Buffer.from(data).toString('base64')); }); } 

并在我的HTML中像这样渲染:

 api.getImage(0, (result) => { $('#mainContent').append('<img src="data:image/jpeg;base64,' + result + '" />'); }); 

这并不是我最有效的方法。 Base64转换有助于跨技术的界限,但不是最有效的方式。

我有一些其他的考虑:

  • 通过节点托pipe文件目录,所以我可以直接从我的网页链接到文件(这是不理想的,因为文件可以来自本地文件系统的任何地方)
  • 使用节点将文件从文件系统复制到服务目录,以便我可以链接到它通过HTML(这将是缓慢的:磁盘IO和什么)
  • 将原始文件缓冲区以某种方式返回到网页(这看起来应该是要走的路,但不知道如何在“传统的”html中渲染)

考虑到我可能要一次处理50或100张左右的图像(包括可能调整缩略图视图的大小:通过优化BitmapImage的解码,我可以在WPF中有效地做到这一点),遵循一般的方法是什么?

为了澄清,我并没有太在乎asynchronous/进程阻塞,因为我是数据传输本身。