我一直在尝试使用 phantomjs 或 slimerjs 从网站捕获一系列 png,然后将输出发送到 /dev/stdout 并将其通过管道传输到 ffmpeg 以制作视频。
像这样:
phantomjs test.js | ./ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -y -c:v png -f image2pipe -r 10 -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart test.mp4
测试.js:
var page = require('webpage').create();
page.clipRect = { top: 0, left: 0, width: 900, height: 800};
page.viewportSize = { width: 900, height: 800};
var url = 'http://dl.dropbox.com/u/621993/voronoi/voronoi.html';
var frames = 50;
page.open(url, function(){
setInterval(function(){
page.render('/dev/stdout');
if( frames == 0 ) {
phantom.exit();
}
frames--;
}, 100);
});
但是我在标准输出上没有得到任何东西,在最新的 ubuntu 和 debian wheezy 上尝试了这个,来自端口的 node.js 和从 git 编译的 node.js。
phantomjs 安装npm install -g phantomjs
我猜这是一个错误,尝试查看他们的 github 问题跟踪器,但有 1000 多个未解决的问题,我想在开票之前检查我是否真的做对了。
谢谢你。