我有一個PhantomJS腳本,我試圖用它來基本上生成特定網站的視頻。PhantomJS - 暫停/恢復JavaScript執行
var page = require('webpage').create();
page.viewportSize = {
width: 1280,
height: 720
};
page.open('http://my-awesome-site.whatever', function() {
var fps = 30;
var seconds = 10;
var elapsed = 0;
var current = 0;
takeScreenShot();
function takeScreenShot() {
if (elapsed < seconds * 1000) {
page.render('screenshot_' + (current++) + '.png');
elapsed += 1000/fps;
setTimeout(takeScreenShot, 1000/fps);
}
else {
phantom.exit();
}
}
});
上面的腳本會嘗試每秒鐘拍攝30張截圖,持續10秒,然後我使用ffmpeg將其組合成mp4。
問題是,page.render()函數不是即時的,也不會暫停頁面上運行的腳本。因此,當我使用jQuery動畫指向一個頁面時,我相信它依賴於setTimeout,這些超時在處理每個屏幕截圖時繼續運行。結果,輸出的視頻顯示速度大大加快。
有沒有辦法通過PhantomJS來暫停腳本執行?什麼我希望的是做這樣的事情:
page.pause();
page.render('screenshot_' + (current++) + '.png');
page.resume();
但可悲的是,我沒有看到這樣的在他們的API文檔任何東西。
禁用JavaScript將不起作用,因爲我需要在屏幕截圖之間恢復執行。您的第二個建議可能會起作用,我可以在頁面上放置某種全局暫停/恢復功能,但在這一點上添加很多內容。我希望有一個更簡單的方法。 – Danny 2014-10-10 04:24:41
你可以做一個頁面,每30秒打開一次... – xShirase 2014-10-10 04:32:22