FFCreator容器部署

本文讲的是如何将开源视频剪辑框架FFCreator部署到容器中。

其依赖的运行时较多,在尝试将其打包成单个可执行文件失败后,我决定将整个运行时打入镜像。

创建Dockerfile

下面Dockerfile并非完整的Dockerfile,但是主体部分已经给出

FROM 某个centos镜像
MAINTAINER 你的邮箱地址

# ffcreator依赖 项目安装
RUN yum -y install gcc-c++ cairo-devel pango-devel libjpeg-turbo-devel giflib-devel
RUN yum -y install mesa-dri-drivers Xvfb libXi-devel libXinerama-devel libX11-devel 

# 安装gcc 和 make
RUN yum -y install gcc automake autoconf libtool make

# 安装 python3
RUN yum -y install python3

# 更新 gcc 搭配 7.3,自带的4.8不符合后面安装ffcreator的要求
RUN yum -y install centos-release-scl devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
RUN echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile

# 增加node运行时
RUN wget https://nodejs.org/dist/v16.15.0/node-v16.15.0-linux-x64.tar.gz
RUN tar -zxvf node-v16.15.0-linux-x64.tar.gz -C /usr/local
RUN ln -s /usr/local/node-v16.15.0-linux-x64/bin/npm /usr/bin/
RUN ln -s /usr/local/node-v16.15.0-linux-x64/bin/node /usr/bin/

# 配置 npm 依赖的python版本
RUN config set python python3.6

## 安装 node-gyp
RUN npm install -g node-gyp

# 增加nodejs项目文件
ADD package.json /

其中package.json依赖部分如下所示:

"dependencies": {
  "canvas": "^2.9.1",
  "ffcreator": "^6.6.9"
}

因为在Dockerfile里选择用source改变gcc版本总是不生效,所以,我选择用其他方法解决:
选择生成容器后,进入容器,执行 source /etc/profile ,然后 npm install , 然后将该container保存为image

docker commit <容器id>  <容器名称>:<容器版本>

解决容器内运行ffcreator报错问题

在容器里执行node脚本,使用ffcreator进行视频编辑时,原先在ubuntu环境下可以用的脚本报错了,内容如下:

Cannot read property 'ARRAY_BUFFER' of null

其实就是因为我们的容器属于无显示设备的服务器,那么按照 github上的issue 解决就好了,即:

无显示设备的服务器请使用xvfb-run命令启动程序:

xvfb-run -s "-ac -screen 0 1280x1024x24" npm start

在原先的命令前面加上这么一句就好了

xvfb-run -s "-ac -screen 0 1280x1024x24"

参考链接

posted @ 2022-06-01 19:44  亚楠老猎人  阅读(703)  评论(0编辑  收藏  举报