我想用FFmpeg渲染一个用于创建视频的网站。
这是到目前为止的代码和phantomjs命令。
它实际上适用于很多网站,但我想渲染一个内部网网站,我收到如下输出。
这种错误渲染的原因是什么?我错过了什么?
感谢。
//编辑1:我认为问题在于,phantomjs存在字体问题。使用verison 2.1.1
//编辑2:与https://developers.google.com/fonts/
相同的问题{{1}}
答案 0 :(得分:1)
解决方案:
渲染https://developers.google.com/fonts/的问题,或者更确切地说,phantomjs中渲染函数的常见问题在phantomjs 2.5.0 beta中已经部分修复
带有奇怪符号的第一张图片基于缺少的字体。 Phantom在没有核心字体集的Redhat上运行。所以我安装了一些TTF。
/usr/share/fonts/TTF
fc-cache -f -v
答案 1 :(得分:0)
关于日语,中文,印地语或其他特殊字符,我遇到了phantomjs和这些特殊字符的字体渲染问题,这就是我解决问题的方法:
下载相应的.ttf
Unicode fonts文件。网上有几个免费网站,但你有几个Unicode字体免费文件可用于几个不同的角色地图here。
将.ttf
文件保存在目录/etc/fonts
或目录~/.fonts
中的服务器/计算机中。后者也是一个unix目录,如果它不存在,则创建它,如果你没有root权限就需要它(例如共享服务器)
相应地运行fc-cache -fv /etc/fonts
或fc-cache -fv ~/.fonts/
。此fc-cache命令扫描系统上的字体目录并构建字体信息缓存文件
然后在phantomjs代码中,始终使用utf-8
文件系统
var HTMLfile = fs.open(path + file_name, {
mode: 'r', //read
charset: 'utf-8'
});
var content = HTMLfile.read();
HTMLfile.close();
或网页
var webPage = require('webpage');
var page = webPage.create();
var settings = {
operation: "POST",
encoding: "utf8",
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify({
some: "data",
another: ["custom", "data"]
})
};
经过长时间的搜索,它对我有用。