2017-08-07 48 views
4

我想開發一個小應用程序,我首先通過aperture包捕獲屏幕,然後嘗試使用video標記在屏幕上顯示它。打電子本地mp4文件

我捕捉屏幕通過:

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

我可以驗證此文件是否存在,併發揮得很好,如果我輸入: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 

:/

我不知道如果我錯過了一些東西,使「文件:/ /「安全或其他。

我也想過通過「fs」和base64'ing它提供的視頻作爲data:來閱讀整個文件,但由於這個視頻文件可能很大,我覺得我不應該這樣。

由於我是electron的新手,我希望我錯過了一些基本的東西。任何幫助表示讚賞。謝謝!

回答

0

很高興看到有人在這裏熟悉的問題。 :)

我建議你在BrowserWindow中禁用網絡安全偏好。還有一個issue與此主題相關。