2

我一直在尝试使用 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 多个未解决的问题,我想在开票之前检查我是否真的做对了。

谢谢你。

4

1 回答 1

0

如果您尝试其他 URL for ex ,似乎phantomjs在获取页面上复杂的 html/js 时会遇到一些麻烦(顺便说一句非常漂亮)。http://www.goodboydigital.com/pixijs/examples/12-2/和稍微不同的命令和最近ffmpeg它只是工作;)

phantomjs test.js | ffmpeg-2.4.2-64bit-static/ffmpeg -y -c:v png -f image2pipe -r 25 -t 10  -i - -c:v libx264 -pix_fmt yuv420p -movflags +faststart test.mp4
于 2014-12-06T17:31:39.893 回答