【发布时间】:2018-01-15 04:37:58
【问题描述】:
我正在尝试开发一个小型应用程序,我首先通过aperture 包捕获屏幕,然后尝试使用video 标记在屏幕中显示它。
我通过以下方式截屏:
import apertureConstructor from 'aperture';
const aperture = apertureConstructor();
const options = {
fps: 30
};
(async () => {
await aperture.startRecording(options);
setTimeout(async () => {
this.captureUrl = await aperture.stopRecording();
}, 3000)
})();
请忽略混乱。 Aperture 包将捕获的视频写入磁盘,最终,我在captureUrl 中获得了该文件的路径。是这样的:
/var/folders/29/08gshk3n4mlbbcjnm1m5xyy40000gp/T/tmp-79999m0uOszQK0zaC.mp4
如果我在 Google Chrome 地址栏输入:file:///var/folders/29/08gshk3n4mlbbcjnm1m5xyy40000gp/T/tmp-79999m0uOszQK0zaC.mp4,我可以验证该文件是否存在并且可以正常播放。
所以我尝试使用这个地址作为我的video 标签的来源,如下所示:
<video control autoplay>
<source src="/var/folders/29/08gshk3n4mlbbcjnm1m5xyy40000gp/T/tmp-8004145a2o4gugbVV.mp4" type="video/mp4">
</video>
抱怨文件不存在(404):
GET http://localhost:9080/var/folders/29/08gshk3n4mlbbcjnm1m5xyy40000gp/T/tmp-8004145a2o4gugbVV.mp4 404 (Not Found)
是的,它确实尝试转到localhost:9080,因为在这种情况下,它是我的开发服务器主机并且没有这样的文件。
所以我决定添加file://...
<video controls autoplay>
<source src="file:///var/folders/29/08gshk3n4mlbbcjnm1m5xyy40000gp/T/tmp-8004145a2o4gugbVV.mp4" type="video/mp4">
</video>
这次它说:
Not allowed to load local resource: file:///var/folders/29/08gshk3n4mlbbcjnm1m5xyy40000gp/T/tmp-80041e3SlBZUNphLM.mp4
:/
我想知道我是否错过了使“file://”安全的东西或其他东西。
我还考虑过通过“fs”读取整个文件并通过 base64 将其提供为 data: 的视频,但由于此视频文件可能很大,我觉得我不应该那样做。
由于我是electron 的新手,我希望我错过了一些基本的东西。任何帮助表示赞赏。谢谢!
【问题讨论】:
标签: macos html5-video electron