Rat's

云转码切片express-ffmpeg+CMS一体化系统安装教程
说明:云转码系统估计很多人知道,博主体验过七彩云、FFMpeg WebUI等云转码,感觉都不是很适合自己,而且好像...
扫描右侧二维码阅读全文
12
2018/09

云转码切片express-ffmpeg+CMS一体化系统安装教程

说明:云转码系统估计很多人知道,博主体验过七彩云、FFMpeg WebUI等云转码,感觉都不是很适合自己,而且好像都不更新了,特别是FFMpeg WebUI,貌似很久前就一直停留在0.9.6版本,恰好最近看到了个基于nodejs制作的开源免费的云转码切片系统,功能上基本可以满足个人日常需求了,而且博主感觉nodejs的转码切片速度比现有的很多php转码程序都快些,不知道是姿势问题还是啥,这里就分享下,给有需求的人用。

提示:本文主要介绍的是开源免费版的功能及其源码的安装方法,仅供学习交流使用。且不能用于非法用途,否则后果自负!

项目介绍

该云转码不再是简单的云转码系统,而是CMS系统+云转码系统一体化,自带整个完备的并且对移动端友好的,而且非常利于SEO优化的自适应CMS系统,根据后台的分类系统和门户CMS管理系统,直接在首页达成完备的在线视频播放系统,适用于在线教育、企业内部培训视频、在线视频自媒体门户等多种运用方向。

如果你不想使用CMS,也可以单独当它是一个可以在线视频转码的工具,对视频进行在线格式转换,很适合用来做一个视频转码的网站。

  • 实现大文件分块上传,批量上传。
  • 实现服务器端自动动态码率转码并且切片,完成后会自动删除原视频文件。
  • 实现批量添加水印和字幕,和同时处理。
  • 实现截图,默认自动生成四张截图。
  • 一键获取分享链接,设置防盗链,token防盗链或者仅允许指定域名iframe调用。
  • ts切片文件域名分发,负载均衡,支持无限多服务器同步分发。

官方网站:https://www.moemv.com/
开源版官网:https://ffmpeg.moejj.com/
开源版演示:https://www.moejj.com

特别提示

目前高级版和纯净版云转码程序都已开发,包括即将开发完成的在线视频APP安卓/IOS APP软件,真正的做到CMS+转码切片+APP全方位一体化,上手更简单,并且转码和切片上比开源版强很多,切片质量也是非常的好,不管是在切片加载情况,播放切片时的流畅度及系统负载等方面,都有不错的表现,用过的人都知道,且高级版结合了最新的CPU+GPU混合转码,在转码速度大幅度提高下,质量和压缩率都十分完美,同时纯净版和高级版都会长期频繁更新。

注意:对高级版或者纯净版有兴趣的看文章后面的介绍,有购买需求的可以加微信rats54。

这里感谢下购买过并支持该程序的人,有您的支持,以后该程序会越来越强大,更新会更频繁,功能越来越多,同时保证永远不会加后门,可放心使用。

截图

请输入图片描述
请输入图片描述
请输入图片描述
请输入图片描述
请输入图片描述
请输入图片描述

更新

【2019.1.17】
更新部分安装步骤,使出错率更小。

为什么要使用云转码

传统视频如果没有正确的压缩,一般来说尺寸非常大,动则3Gb4Gb的大小,再者因为视频需要在网站中进行播放,传统中如果放置常规的flv或者mp4格式,那么浏览器会一直进行缓存,并且在缓存在一定播放长度之后才会进行播放,这样会消耗更多的带宽和让用户等待更长的时间,所以转码之后再进行切片是非常必须的,一来无损的压缩视频文件使其占用磁盘尺寸更小,并且基于hls格式,也是M3u8格式中储存了所有ts切片列表,这种模式加载,只需要加载第一个ts切片视频就可以开始播放,这样就使用户等待的时间更少,减少服务器带宽使用,并且画质的损失很小。这也就是为什么现在大部分视频网站都是使用hls格式来播放的。

具体功能

  • 后台云转码加切片,运用最精简的代码,做成最快的转码+切片功能。
  • 秒切功能,切片速度领先所有市面收费云转码系统。
  • 视频分类、视频筛选、视频搜索,后台一应俱全。
  • 防盗链、token防盗链,多重防盗链,避免流量损失,可以设置指定域名只能iframe调用。
  • 字幕烧录,水印烧录,超级简单的操作,即可将字幕烧录进视频或者添加水印到视频中。
  • 支持vtt字幕,后台可以根据不同的视频上传不同的vtt字幕,前台播放自动加载字幕。
  • 视频截图,后台配置截图数,云转码切片的时候自动截图。
  • ts分发,多服务器同步内容,ts文件自动循环加域名前缀,负载均衡。
  • cms系统配置,站点名称设置、seo标题设置、seokeywords设置,seodescription设置,前台显示截图设置,前台自动生成cms系统,自适应布局,针对移动端优化,seo效果极佳。

新增功能

#增加会员系统
增加会员系统,可以不开启CMS,独立开启会员系统,双向验证,安全可靠,后台可以配合卡劵生成,前台用户使用卡劵进行升级。

#真正意义上的权限系统
路由层面的权限系统,非网上的播放器假权限,根据权限不同,相同的M3U8播放文件返回不同的内容,比如普通会员只能播放3分钟,就只会返回3分钟的切片内容,升级之后才会返回完整的切片内容。

#卡劵系统
后台设定卡劵生成,可以设置开通会员时间,用户前台使用即可升级到对应的会员,到期之后权限失效,需要重新开通,如果连续使用则是累加会员时间。

安装

如果你觉得安装很困难,想很快安装好,可以使用博主写的Docker镜像,安装教程:点击访问

安装教程官网其实有,不过仅有Ubuntu的手动教程,其它系统都没有,博主发现该程序所需的大部分环境宝塔面板均可以直接安装,鉴于为小白着想,这里就用宝塔面板安装该程序,支持的系统也多。

所需环境:nodejsexpressjsmongoDbffmpegRedis

1、安装宝塔

#Centos系统
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
#Ubuntu系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
#Debian系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh

安装完成后,进入面板,点击左侧软件管理,然后安装MongoDbRedisNginx(使用域名访问才需要安装,反之不用)。注意Debian安装MongoDb之前还需要使用命令apt install sudo,不然可能存在MongoDb启动不了的情况。

2、安装ffmpeg

wget https://www.moerats.com/usr/down/ffmpeg/ffmpeg-git-$(getconf LONG_BIT)bit-static.tar.xz
tar xvf ffmpeg-git-*-static.tar.xz
mv ffmpeg-git-*/ffmpeg  ffmpeg-git-*/ffprobe /usr/bin/
rm -rf ffmpeg-git-*

3、安装Nodejs

#Debian/Ubuntu系统
curl -sL https://deb.nodesource.com/setup_8.x | bash -
apt install -y nodejs git

#Centos系统
curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum install nodejs git -y

安装PM2express

npm install -g pm2 express

4、创建数据库
创建之前建议去面板软件管理那里找到MongoDb数据库重启一下。

#这里数据库名,用户和密码都是ffmpeg
mongo
use ffmpeg
db.createUser({user:"ffmpeg",pwd:"ffmpeg",roles:[{role:"readWrite",db:"ffmpeg"}]})
db.auth("ffmpeg","ffmpeg")

如果显示1则增加用户正确,再使用Ctrl+D退出。这里如果有No such file or directory报错,请检查下数据库运行状态。

5、配置云转码

git clone https://gitee.com/quazero/express-ffmpeg.git
cd express-ffmpeg
#创建config文件夹
mkdir config
cd config

创建并编辑auth.js配置文件:

nano auth.js

将以下代码复制进去:

#该配置比很早的版本多了三个设置项,很多人出错就在这里,secret是session需要的秘钥,login是后台登陆地址,loginmsg 是后台未登录显示的内容,默认是404。
module.exports = {
    user: "admin",
    password: "admin",
    db: "ffmpeg",
    dbuser: "ffmpeg",
    dbpassword: "ffmpeg",
    secret: "yoursecret",
    login: "/adminlogin",
    loginmsg: "404 Not Found"
};

再使用Ctrl+XY确认退出编辑模式,参数从上往下依次是登陆云转码平台的账号,密码,数据库,数据库用户名,数据库密码。本教程安装的mongodb数据库为ffmpeg,用户名和密码都是ffmpeg,可以自行进行修改。

6、安装并运行云转码

cd /root/express-ffmpeg
npm install
#如果服务器重启,则必须在express-ffmpeg源码文件里重新运行命令启动
pm2 start bin/www -i 0

7、反向代理
点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL填入http://127.0.0.1:3000,再启用反向代理即可。

8、站点配置
最后打开xx.com/adminlogin,输入设定的账号密码,本教程设置的是adminadmin,进入之后点击设置,转码设置需要绑定域名,截图数需大于0,然后域名分发可以不设置,但需要提交下、CMS设置也需要绑定域名,播放器设置需要关闭强制QQ浏览器播放,当然其它设置需要自行修改,不然视频很可能因为某个设置的问题放不了。

最后这里要说下的就是,如果你使用后,心理有个疑问,为什么转码速度这么慢,或者很慢?那么就意味着你需要换一个强一点的CPU独立服务器,切勿用VPSVPSCPU限制很多,如果你拿来转码,很有可能你的VPS会被暂停,CPU选择可参考跑分榜→传送门

当然你要是只用秒切功能的话,对CPU要求就不是那么大了,不是很耗资源。

云转码高级版

高级版官网:https://express-ffmpeg-vip.moejj.com
演示站:https://www.leimulamu.com/

主要功能:

1、多码率转码,码率自定义。
2、跑马灯烧录,多码率自动适应,字体自定义,颜色自定义,间隔自定义,速度自定义,描边自定义,背景自定义。
3、多图片水印烧录,可设置一个图片一个位置,最多设置4个水印四个位置。
4、智能动态码率转码,根据视频自身的情况,智能分配每一帧的码率,相同码率下,压缩率更高,画面更清晰。
5、选择保留Mp4,是否切片,是否保留源片等。
6、srt,ass字幕自动烧录进视频中。
7、自动生成截图,自动生成动态图,后台可自定义相关参数。
8、GPU+CPU混合转码,超级快的速度,画面无损失,压缩率与纯CPU转码一致。
9、云储存,自建MINIO或者直接使用亚马逊S3,自动同步切片和图片、源片。
10、智能片头、片中广告插入,后台可智能生成片头视频,多片头、片中广告随机播放,随时替换,立马生效。
11、高级试看功能,根据用户登录情况,用户组权限情况,视频积分点播情况等实时动态返回m3u8内容,同一个M3U8返回不同的内容。
12、高级CMS系统,自带用户系统,用户上传,积分点播,用户组,VIP用户组,支付系统,订单系统,推广系统,签到系统,运营极其简单,后台豆瓣API自动获取信息。
13、自适应M3U8,根据转码的多分辨率,自动生成一个自适应M3U8地址,根据用户的带宽自动播放其中一个分辨率。
14、电影和电视剧系统,无论更新电影类型或者是电视剧类型都非常简单。
15、文章发布系统,图集发布系统。
16、分发系统,可多服务器同时提供服务,负载均衡。
17、超级防盗链,利用内置CMS可做到完全的防盗链,根据用户的权限,同一个m3u8返回完全不同的内容。
18、播放器时间轴预览功能,鼠标移动到时间轴上显示当前时间的预览图,外挂VTT字幕功能,用户后台上传VTT字幕,前台自动加载外挂字幕。
19、多位置,多时间段去除水印和跑马灯功能,介绍:https://express-ffmpeg-vip.moejj.com/blog/5d76121b9773bd51d721a00e。
20、推流服务器,直播板块,直播室功能,介绍:https://express-ffmpeg-vip.moejj.com/blog/5d7a597b9773bd51d721a010
21、实时聊天室功能,可用于直播间,多人在线实时聊天,基于socket开发,介绍:https://express-ffmpeg-vip.moejj.com/blog/5d8209ac9773bd51d721a011
22、附带全自动发布系统,可支撑自动发布至上千个CMS,体验链接:https://yzm.pw/

更多功能,继续开发中,每月更新。

其他更多功能可以看更新日志:

【2019年3月3日】
新增了多服务器多域名分发配置。
新增了大量对接网盘系统的API配置。
根据所填写分发配置,m3u8中的ts会随机的添加分发域名。
通过多服务器同步切片或者直接反代,就可以实现多服务器负载均衡的效果。或者直接分发CDN域名,也可以解决带宽和负载问题。

【2019年3月12日】
增加一个新的分辨率640P的选项。
增加保留mp4的新选项640P。
修复一些BUG,比如点击推荐然后删除出错的问题。
增加自定义每个分辨率的码率功能,可以设置自己需要的码率。

【2019年3月20日】
增加单独图片水印单独位置的水印烧录功能,这个算是一个比较大的重构功能。
删除原有的配置中的水印配置,并且重新了设计了水印功能,可以设置每一个位置设置不同的图片水印。
很智能的自动匹配视频的大小,也就是所有视频转码之后,图片水印的大小都是自适应的,都是一样的大小。
后台水印管理中,可以添加四个位置四个图片水印,可以完全不同,也可以相同,不添加则不会添加图片水印。
后台预留了文字水印的位置,估计以后会再加上文字水印功能。

【2019年4月5日】
m3u8地址整体优化,更利于切片的管理和储存。
电视剧模块增加生成海报功能,因为m3u8地址的改变,所以如果升级新版本需要在电视剧模块中点击一下生成海报的按钮。
增加对ass字幕烧录的支持,很多视频的字幕就是ass特效字幕,原来srt字幕,现在增加了对ass字幕的支持,在movies文件夹中与视频同名的ass字幕会优先烧录进视频中,也就是如果同时存在srt字幕和ass字幕,则会直接烧录ass字幕。
增加了视频定制化转码的配置。在现在这个每一个视频都不一样的变化的时代,当然要对视频有定制化转码的选项,所以现在可以选择部分或者仅仅一部视频,进行定制化转码的配置。
增加了跑马灯广告中文本颜色,描边颜色,描边大小的设置。非常的炫酷。再配合字体文件,可以完美自定义跑马灯的样式。

【2019年4月24日】
增加多码率的试看功能,重写了全部的获取m3u8和处理m3u8的逻辑,使其完美支持了分发设置下的试看功能。
真正意义上的试看功能,并非播放器上边的模拟试看,相同的m3u8根据用户的状态返回完全不同的内容。
完美支持了高级版多码率版本的试看功能,如果在后台开启试看功能,则未登录的用户所有分辨率只能试看一分钟,注册之后用户组对应的分辨率可以观看全片,但是对应分辨率如果用户组权限不够还是只能试看一分钟。
有一个很有趣的场景:开始开放m3u8给第三方采集,突然有一天后台一键开启试看功能,所有外面引用的m3u8就全部变成了一分钟试看,是不是非常有趣。
试看功能完美支持分发设置,也就是说使用cdn的用户也可以使用试看功能,试看功能的原理是捕获用户的m3u8静态文件请求,将请求完全交给源代码处理,不走静态静态目录,所以相同的m3u8根据用户的状态直接返回完全不同的内容。
试看功能一旦开启,就拥有了类似优酷、爱奇艺相同级别的防盗链功能,但是仅限于使用本源码配套的cms,试看功能意味着永久的杜绝防盗链。
对接了支付宝的官方接口,可以直接使用支付宝充值积分。往后可能会陆续增加大量的支付接口,方便用户选用。
增加了订单管理功能,通过支付宝充值的订单将在订单管理中进行管理。
更新了前端的提示功能,在移动端上非常友好,增加了试看的提醒等。
修复了电影和电视剧上传海报的问题。
修复了少数bug。

【2019年5月29日】
增加了大量的对接APP的API接口。
增加了一键生成视频海报的功能。
修复和优化了大量已知问题,前端重写了很多逻辑。
获取m3u8增加详尽,增加动态图,截图,mp4地址。
增加了多视频转码功能,后台可设置同时转码多少个视频,全方位利用CPU效能。
APP对接完成,演示APP地址:https://www.iqi360.com/topic/5ce4277cac599a7c35b49eb8

【2019年6月8日】
超现代的响应式模板。
绝佳设计,绝佳的用户体验。
最新的BOOTSTARP4框架新模板。
更新了超大量的代码和优化了大量的程序代码,首页完全内存缓存

【2019年6月22日】
增加了高级版CMS的评论功能,后台审核功能。
增加了用户编辑功能,可以编辑用户名,邮箱,重设密码,vip用户组,VIP到期日期。
完全改进了发布流程,视频转码完成之后,有一个中间状态,点击正式发布,视频才会发布到前端。
改进了网页上传机制等。

【2019年6月30日】
新增用户上传功能,用户可以在自己的专用上传页面,上传视频,后台CMS管理中可以设置用户上传视频审核通过之后可以增加的积分。用户上传之后获得积分,可以使用积分升级用户组,包月或者包年,解锁观看权限。
增加了所有视频状态的捕获和展示机制,分别有四种状态:审核中,剧集,电影,转码中或者等待发布。
美化了用户上传视频页面,和已经上传视频列表。

【2019年8月03日】
增加了云储存功能,向云更近一步,用户可自建minio集群对象储存或者使用亚马逊s3,可将源片,转码后各分辨率mp4,m3u8和切片文件,截图,动态图等全部自动转存至云储存,用户可直接调用云储存的资源进行播放。
增加了自适应m3u8功能,根据视频转码出来的多个分辨率,根据用户自身的带宽情况自动加载其中一个分辨率的m3u8,非常智能。以后只需要放出一个自适应m3u8就够了。
新增导出表格功能,用户需要分工功能怎么办,一个人管理视频转码,一个人管理CMS运营,这个时候导出表格功能就有用了,一键导出所选视频的所有m3u8信息成表格。
新增了保留源片的选项,新增了保留源片的选项,建议配合云储存使用。

【2019年8月6日】
新增了GPU转码的支持,在翻阅了国内外大量的文档之后,重新规划设计的GPU转码功能,完全遵守最新的NVIDIA规范,使用CPU+GPU混合转码模式,同时利用CPU和GPU的效能,保证无论低码率还是高码率的质量和速度,同时做到了和CPU转码同样的压缩率和画质,堪称最完美的GPU转码功能。
##转码测试
测试文件:1.81G,时长2个小时10分钟。
转码设置:同时转码480P,720P,1080P,码率设置为500,1000,2000,并且同时添加图片水印和跑马灯。使用GPU转码。
结果:用时7分钟,整个多码率全部完成转码,如果不要1080P,则最多需要3分钟即可完成转码,纯CPU转码i9需要25分钟左右。保持了和纯CPU同样的压缩率,同样画面效果也和CPU转码一致。
GPU性价比之选:配合德国机器94欧元,也就是744人民币即可搭建出GPU转码服务器。

【2019年8月11日】
由于牵扯到商用代码,所以部分核心代码加密,增加授权机制,增加了可替换型TS广告系统,可随意多个视频广告,可选择片头还是片中,多个视频广告同时存在的情况下,随意选择其中之一进行插入,片中广告会根据视频的时长,智能在其中间位置插入视频广告。不会做视频广告?没关系,新增智能一键生成视频广告的功能,简单几步操作,智能生成自带BMG背景音乐的视频广告。
新增TS可替换型广告,可自行上传任意多个视频广告,可选择片头片尾插入。随意替换,即时生效。
新增视频广告生成系统,可自行在后台自动生成视频广告,任意时长,任意广告内容,任意图片,十分智能。
新增停止队列功能,停止队列之后可操作剪切片头等操作。

【2019年8月28日】
新增CMS管理中,是否开启积分购买点播功能,增加了默认视频积分价格,必须同时开启试看功能。
试看功能和VIP用户组、积分点播三个功能共同配合,完善了这个积分点播功能:
1、用户未登录时,提醒只能观看一分钟试看,登录之后才能观看完整视频。
2、用户登录时,如果用户组权限不够或者是VIP用户组权限不够,就会提示:您用户组权限不够,只能观看一分钟试看,请升级用户组或者积分购买此视频完整版。
3、如果此视频用户使用积分购买过,那么会直接返回完整视频。
4、如果用户的用户组权限够了,也会直接返回完整视频内容。
5、无论用户如何盗链M3U8,所有非本站CMS都会只显示1分钟试看内容。
6、可自定义每一部视频的单独的积分价格,如果未设置,则会直接使用CMS管理中设置的默认积分价格,免去重复设置之苦。
后台增加视频简易编辑功能,简易编辑可以设置视频的简单的标题和简介,还有此视频的积分价格,简单的分类标签,除了标题,其他都是选项填,再也不用去编辑中详细编辑视频信息。

【2019年9月9日】
更新了一个超级功能,就是批量多位置、多时间段,智能去除跑马灯和水印的功能,详见:https://express-ffmpeg-vip.moejj.com/blog/5d76121b9773bd51d721a00e
新增了视频库中,转码前的全格式视频实时预览功能,可以应用在用户上传中,转码前就可预览视频内容,更方便审核视频。
新增了前端CMS签到功能,用户每天登陆可签到一次,后台可设置签到所获得的积分数。
新增了前端VTT外挂字幕加载和后台VTT字幕上传功能。
新增了前端时间轴实时预览和后台可选生成时间轴预览图功能。鼠标移动到时间轴即可预览时间轴上的视频内容。

【2019年9月13日】
在高级版源码中内置了推流服务器和相关的直播功能。用户可根据需求按需开启或者关闭推流服务器功能。
新增推流服务器设置,用户可选择性开启推流服务器,开启之后无需任何其他操作,直接一键开启推流服务器。
开启推流服务器之后,可在后台为指定用户开启直播权限,开启之后,用户可在自己的个人页面看见直播链接和直播秘钥。
用户通过OBS软件或者其他方式将直播推流到推流服务器,则前台会自动展示直播间。
网站用户可通过前台直播板块中的直播间进入观看直播。
CMS设置中新增前台相关直播参数,例如是否开启直播板块等。
案例视频可见:https://express-ffmpeg-vip.moejj.com/blog/5d7a597b9773bd51d721a010

【2019年9月18日】
新增了多人实时聊天室功能,在直播室中使用更佳,详情可见:https://express-ffmpeg-vip.moejj.com/blog/5d8209ac9773bd51d721a011

【2019年9月24日】
新增了额外系统全自动发布系统,可自动将高级智能云转码中的视频发布至上千个CMS,转码完成的瞬间即发布出去。
介绍:https://express-ffmpeg-vip.moejj.com/blog/5d8af6d49773bd51d721a013

【19年10月5日】
自动发布平台新增了对msvod,也就是魅思系统的自动发布适配,全自动发布视频到msvod系统,转码完成一瞬间即自动发布,无延时全自动。
修复了大量的历史遗留问题,修复了大量bug,新增了前端标签删除等功能。

【2019年10月14日】
新增入库时自动分类入库、封面入库。
修复部分已知问题,新增更多app接口,方便开发app。

目前纯净版分为14881988元两档价格,只在安装的台数上有区别,其它均一模一样,包一年更新,并永久使用,程序完美兼容LinuxWindows系统,并提供各种新手教程/一键安装脚本,安装不再困难,一个命令即可装好,有需求的可以加微信rats54

云转码纯净版

该系统利用阿里巴巴开源的最强大的nodejs框架egg.js将整个转码切片系统抽离出来,最后制作完成了这款最好用、也最容易上手、安装也最简单的视频转码系统,称之为theone ffmpeg转码切片系统,也是用企业级标准制作的一款高性能极致视频转码切片系统。

定位:极致的方便,极致的使用体验,极致的用户自定义,极致的转码切片效率,为极致转码切片而生,企业级设计和编码。

主要功能如下:

1、所有码率自定义。
2、5个分辨率可选择。
3、选择是否切片,选择是否保留mp4文件,选择是否秒切。
4、选择是否截图GIF动态图,宽度,截取时长,系统会智能截取视频中间最精彩位置进行截取。
5、水印图片自适应,根据生成视频分辨率自适应图片宽高,所有分辨率转码出来图片水印都一样大小。
6、多地方水印烧录,可以同时将水印添加到视频的四个地方。
7、切片时长自己设定。
8、超级截图,生成10个截图只需要1秒钟。
9、全方位优化代码,设置简单,功能超级强大。
10、安装极简,带宽允许情况下2分钟即可安装完成,安装完成直接使用无需配置。
11、一键批量获取m3u8,一键获取视频所有截图,mp4和m3u8等全部信息,一键自动复制。
12、跨域放行防护配置项,如果开启则域名调用会有跨域判断,如果不开启,则可以将m3u8给所有网站调用。
13、自定义储存视频路径,一键可自动入库,srt字幕自动烧录。
14、跑马灯自定义,跑马灯广告间隔,速度,跑马灯文字。
15、高级特性 切片默认自动缓存进内存,默认缓存1000个ts切片,用户播放直接从内存读取,突破硬盘io,但是请每一个核搭配至少2g内存,比如8核服务器,请至少16g内存。如果内存不够,可以适当调低缓存量。
16、可替换型片头系统,多片头随机播放,多片头随时替换,替换立刻生效,所有视频自动加片头广告。
17、智能批量复制m3u8,按照第三方CMS格式一键复制视频m3u8,非常方便。
18、自带采集页面,简单配置,即可火车头入库所有第三方CMS。
19、高级版剪切片头功能,可随意定制保存前端或后端,或者两个都保存,并且剪切之后可入库使用。批量剪切片头功能可作为视频剪切工具使用。
20、可选多视频同时转码,充分利用CPU效能。
21、去水印和跑马灯广告,可以在除去的同时添加自己的水印或跑马灯。

更多新增功能可以查看更新日志:

【2019年3月24日】
增加是否前台展示采集页面配置项。
增加前台专用采集页面,简单配置火车头可以发布到任何CMS中去

【2019年4月27日】
增加了分发设置,重写了某些逻辑。
后台增加分发设置页面,可以自行设置。
必须将public文件夹整个同步到储存服务器,比如移动到/website,目录结构就是/website/public,然后绑定域名到/website,之后将域名填写到分发设置中即可,可以无限添加分发域名。

【2019年5月19日】
增加了ts加密的功能。
修复了使用秒切,无法截图的问题。
优化了大量转码切片逻辑,更加稳定持久,出现错误会自动跳过。
增加后台分类管理功能。
前台采集页面增加了分类筛选的功能。
增加了视频选择分类的功能。

【2019年5月27日】
增加了前台采集页面的分类筛选功能。
后台增加了状态展示,全部视频,正在转码,转码完成等数量。
后台增加了编辑片名和上传海报的功能。
前台和后台都优化了获取m3u8的展示效果。
增加了同时转码视频数量设置,可以设置同时转码多个视频,充分利用cpu效能。

【2019年7月8日】
增加了批量剪切片头的功能,可以选择一批正在等待的视频,设置剪切时间轴,然后一键批量剪切视频片头。
增加了停止转码队列的功能,点击停止转码队列,会停止自动下一个转码进程,之后方便使用批量剪切片头功能剪切片头。
增加了智能切片功能,在保持最大兼容性的情况下,根据用户自己设置的切片时长进行智能切片,可以做到720P在800码率的情况下,单个TS切片文件100KB左右,加载速度极快。
比如设置切片时长为1秒,则在智能切片情况下,ts的时长大部分为1秒钟,少部分为0.5秒到2秒之间,保证了动态码率和视觉上,甚至播放器上的超高兼容性。
增加了授权机制,保证本人和用户双方权益。

【2019年7月12日】
增加了片头广告的开关,设置开启片头广告,则所有转码完成的视频广告会添加到所有的视频片头中去。
新增了可替换片头广告管理中心,在这里可以上传片头视频广告,进行片头视频广告的转码切片处理,最后强行植入到所有视频的片头中。
实现了片头广告的超强兼容,片头广告超快加载,片头广告可替换、可更改、可任意多个片头广告的功能。
片头广告的原理:利用源码智能更改m3u8文件,每次请求的时候,将片头广告智能嵌入至原来的m3u8文件中,形成新的m3u8文件直接返回到用户播放器中。而且本源码针对所有视频广告全部做了兼容性的转码切片工作,使其变成多个很小的TS切片,用户加载极快,并且可以多个片头广告随机加载其中一个,在用户进行下载合并分发中,就可以做到同一个视频,但是多个片头广告。
片头广告还可以用作将一个特定视频添加到所有的视频开头,来做到一些原来意想不到的作用,比如如果将纯净版商用提供服务,则可以在每一个视频开头都加上自己的企业的宣传视频,例如爱剪辑。

【2019年8月3日】
完善了批量剪切片头的功能。增加了多个选项,可选择保存剪切的前端或者后端,现在剪切片头广告可直接作为视频剪切的工具使用。
增加了格式化的批量复制功能,格式满足大部分第三方CMS编辑的格式。
增加了对ASS字幕的烧录支持。

【2019年8月25日】
新增了截图的时候默认截一张视频的第一帧的截图,方便很多CMS调用的时候封面使用,真正的第一帧截图,点击播放直接从第一帧开始播放,效果和抖音、微视、快手效果一样。
新增了后台地址自定义的功能,而且在修改了大量源码,如果未登录则后台管理统一返回404,只用通过真正的后台地址登陆之后,后台URL才能正常进入。
原来如果未登录会直接返回登录页面,现在重写了源码,后台所有路径如果未登录则全部直接返回404,而且通过自定义后台登录路径,只有通过登录路径正确登录之后才能正常进入后台管理界面。
修改了一键安装脚本,自动随机后台路径和账号密码,安全性大增。

【2019年9月5日】
新增了去除跑马灯,去除水印的功能,想要在网页上实现此功能还比较困难,用户可以批量多选很多部视频同时设置同一个去水印的配置,然后就交给程序自动处理了。
去除水印和跑马灯的功能介绍:用户自己框选视频区域,则此区域会使用差值去水印的功能去掉水印,不同于马赛克,画面损失很小,不影响用户体验。
修复了前端采集页面的视频未转码完成也出现在采集页面的BUG。

【2019年9月19日】
上次更新了去水印和跑马灯的功能,所以用户担心自己添加的水印被我的程序去掉,这次我直接做了动态移动图片水印功能,矛与盾的战争,但是是我自己跟我自己两个大战。
后台设置中一键开启动态水印功能,开启之后就默认在视频左下方移动到右下方,并且在移动到右下方最右边的会停住,每隔100秒都会重新又从左边移动到右边。

目前纯净版488元,包一年更新,并永久使用,程序完美兼容LinuxWindows系统,并提供各种新手教程/一键安装脚本,安装不再困难,一个命令即可装好,有需求的可根据自身经济条件进行选择,欢迎加微信rats54前来咨询。

最后如果你只是玩玩,那建议使用开源版,如果正式使用,或者想要功能多,那建议选择纯净版或者高级版。

Vultr注册就送$50,可开日本/新加坡等机房,【点击注册】。
最后修改:2019 年 11 月 07 日 11 : 32 PM

发表评论

272 条评论

  1. 维他柠檬茶

    鼠大,我后台删除了视频过后,前台CMS报错。我已经重新上传了几个视频并且推荐了,还是无法解决

    /root/express-ffmpeg/views/default/index.jade:18 16| .push-box 17| .push-img > 18| a(href="/movie/#{pushmovie.movieid._id}") 19| if pushmovie.movieid.poster 20| img(src="#{pushmovie.movieid.poster}") 21| else Cannot read property '_id' of null
    TypeError: /root/express-ffmpeg/views/default/index.jade:18

    16| .push-box 17| .push-img

    18| a(href="/movie/#{pushmovie.movieid._id}")

    19| if pushmovie.movieid.poster 20| img(src="#{pushmovie.movieid.poster}") 21| else

    Cannot read property '_id' of null

    at eval (eval at exports.compile (/root/express-ffmpeg/node_modules/jade/lib/index.js:218:8), <anonymous>:271:67) at eval (eval at exports.compile (/root/express-ffmpeg/node_modules/jade/lib/index.js:218:8), <anonymous>:388:4) at eval (eval at exports.compile (/root/express-ffmpeg/node_modules/jade/lib/index.js:218:8), <anonymous>:1033:22) at res (/root/express-ffmpeg/node_modules/jade/lib/index.js:219:38) at Object.exports.renderFile (/root/express-ffmpeg/node_modules/jade/lib/index.js:380:38) at Object.exports.renderFile (/root/express-ffmpeg/node_modules/jade/lib/index.js:370:21) at View.exports.__express [as engine] (/root/express-ffmpeg/node_modules/jade/lib/index.js:417:11) at View.render (/root/express-ffmpeg/node_modules/express/lib/view.js:135:8) at tryRender (/root/express-ffmpeg/node_modules/express/lib/application.js:640:10) at Function.render (/root/express-ffmpeg/node_modules/express/lib/application.js:592:3) at ServerResponse.render (/root/express-ffmpeg/node_modules/express/lib/response.js:1008:7) at /root/express-ffmpeg/controller/cms.js:71:11 at /root/express-ffmpeg/node_modules/async/dist/async.js:3888:9 at /root/express-ffmpeg/node_modules/async/dist/async.js:473:16 at iterateeCallback (/root/express-ffmpeg/node_modules/async/dist/async.js:992:24) at /root/express-ffmpeg/node_modules/async/dist/async.js:969:16 at /root/express-ffmpeg/node_modules/async/dist/async.js:3885:13 at /root/express-ffmpeg/controller/cms.js:38:13 at /root/express-ffmpeg/node_modules/mongoose/lib/model.js:4589:16 at /root/express-ffmpeg/node_modules/mongoose/lib/utils.js:264:16 at _hooks.execPost (/root/express-ffmpeg/node_modules/mongoose/lib/query.js:4298:11) at /root/express-ffmpeg/node_modules/kareem/index.js:135:16

    © 2018 云转码express-ffmpeg倾情奉献 by屈阿零

    1. Rat's
      @维他柠檬茶

      这个貌似是推荐的一个bug,我给个命令你解决看看。依次使用命令:
      mongo
      use ffmpeg
      db.auth('ffmpeg','ffmpeg')
      db.vipbuys.drop()

  2. Flex

    视频上传后电影库里面没有视频,movies文件夹下有视频同名文件夹,里面有视频名添加了undefined后缀的文件,这是什么问题,怎么全网都没有查到有这情况的。。。

    1. Rat's
      @Flex

      这个是上传的问题,具体我也不是很清楚,你自己把视频存到转码目录下的movies文件夹,直接在视频库那里点击入库就好了。

  3. lxqfff

    求教,如何设置mongodb远程连接?

    1. Rat's
      @lxqfff

      本地连接远程mongodb,还是远程连接本地mongodb

      1. lxqfff
        @Rat's

        2个VPS,A和B,A安装了mongodb,让B远程连接A

        1. Rat's
          @lxqfff

          开放下Mongodb运行端口试试,然后远程连接

  4. 枫叶

    请问下我转码服务器网络不好,本地读取卡,有办法让他快点吗

    1. Rat's
      @枫叶

      用网络好点的服务器使用Nginx反代,或者套CF看看

  5. 无边客

    有telegram么?

    1. Rat's
      @无边客

      https://t.me/moerats

  6. 您好时间

    访问视频链接也会出来这样的报错
    Not Found
    404
    NotFoundError: Not Found

    at /root/express-ffmpeg/app.js:265:8 at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at /root/express-ffmpeg/node_modules/connect-flash/lib/flash.js:21:5 at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at /root/express-ffmpeg/app.js:250:3 at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at SendStream.error (/root/express-ffmpeg/node_modules/serve-static/index.js:121:7) at emitOne (events.js:116:13) at SendStream.emit (events.js:211:7) at SendStream.error (/root/express-ffmpeg/node_modules/send/index.js:270:17)
    1. Rat's
      @您好时间

      这个最好给运行日志,命令pm2 log,还有这是直接打开m3u8链接,还是前端的cms?看有没有转码完成,还要播放器关掉强制qq浏览器。

  7. 您好时间

    你好博主,安装很多次都在最后一步报错,请问一下有解决方法吗?谢谢
    [root@befores config]# cd /root/express-ffmpeg

    make: Entering directory `/root/express-ffmpeg/node_modules/canvas/build'
    SOLINK_MODULE(target) Release/obj.target/canvas-postbuild.node
    COPY Release/canvas-postbuild.node
    CXX(target) Release/obj.target/canvas/src/Canvas.o
    In file included from ../src/Canvas.cc:20:0:
    ../src/JPEGStream.h: In function ‘boolean empty_closure_output_buffer(j_compress_ptr)’:
    ../src/JPEGStream.h:42:108: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated (declared at ../../nan/nan.h:1024) [-Wdeprecated-declarations]
    Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local<v8::Function>)dest->closure->fn, 2, argv);

    ^

    ../src/JPEGStream.h: In function ‘void term_closure_destination(j_compress_ptr)’:
    ../src/JPEGStream.h:63:113: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>,

    1. Rat's
      @您好时间

      这个安装日志看不出什么来。

  8. 谢谢

    谢谢博主,这东西还不错,就是没注意,被播放器那个强制qq浏览器坑了好久,关了就好了

    1. Rat's
      @谢谢

      是的,这里好多人都不注意,然后CMS就会播放不了。

  9. lexo

    鼠大,按照教程装好了,怎么设置开机自启啊

    1. Rat's
      @lexo

      给个简单的命令你设置开机自启,pm2 save && pm2 startup

  10. jecsoon

    可以和魅思的CMS对接吗?

    1. Rat's
      @jecsoon

      可以将转码出来的m3u8链接在其它地方调用

  11. nong

    redis这个在这里有什么作用?文中没有涉及到使用redis捏

    1. Rat's
      @nong

      缓存作用,运行程序的时候就会用到了

  12. nong

    额,安装好了,测试了转码也没有什么大问题,就是水印什么去除?按照官方的。“水印图片置于软件文件夹/wrok/watermark下面,文件名分别为1.png、2.png、3.png,不需要水印,则坐标设置为一个0即可。”
    文件夹下并没有看见有图片文件,而且后台管理转码设置也不可以修改水印设置标准!!!这个新建一个新的转码模板可以解决?我的想法就是去除水印

    1. Rat's
      @nong

      去除水印可以上传一个空白的png文件,就可以去除了。

      1. nong
        @Rat's

        图片的命名和大小呢?1.png,2.png?图片像素呢?

        1. Rat's
          @nong

          这种不好说,需要点修改能力了。

  13. Billyy

    博主想请教一下,防盗链key怎么用

    1. Rat's
      @Billyy

      这个你还是直接把key关掉再用吧。

  14. ki

    ../src/Image.h:19:21: 致命错误:gif_lib.h:没有那个文件或目录
    #include <gif_lib.h>

    ^

    编译中断。
    make: * [Release/obj.target/canvas/src/CanvasPattern.o] 错误 1
    make: 离开目录“/root/express-ffmpeg/node_modules/canvas/build”
    gyp ERR! build error
    gyp ERR! stack Error: make failed with exit code: 2
    gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
    gyp ERR! stack at emitTwo (events.js:126:13)
    gyp ERR! stack at ChildProcess.emit (events.js:214:7)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
    gyp ERR! System Linux 3.10.0-957.el7.x86_64
    gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /root/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v8.15.1
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 (node_modules/canvas):
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 install: node-gyp rebuild
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

    up to date in 3.329s
    fixed 0 of 5 vulnerabilities in 831 scanned packages
    5 vulnerabilities required manual review and could not be updated
    [root@localhost express-ffmpeg]# npm audit fix

    canvas@1.3.12 install /root/express-ffmpeg/node_modules/canvas
    node-gyp rebuild

    make: 进入目录“/root/express-ffmpeg/node_modules/canvas/build”
    SOLINK_MODULE(target) Release/obj.target/canvas-postbuild.node
    COPY Release/canvas-postbuild.node
    CXX(target) Release/obj.target/canvas/src/Canvas.o
    In file included from ../src/Canvas.cc:20:0:
    ../src/JPEGStream.h: 在函数‘boolean empty_closure_output_buffer(j_compress_ptr)’中:
    ../src/JPEGStream.h:42:108: 警告:不建议使用‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’(声明于 ../../nan/nan.h:959) [-Wdeprecated-declarations]
    Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local<v8::Function>)dest->closure->fn, 2, argv);

    ^

    ../src/JPEGStream.h: 在函数‘void term_closure_destination(j_compress_ptr)’中:
    ../src/JPEGStream.h:63:113: 警告:不建议使用‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’(声明于 ../../nan/nan.h:959) [-Wdeprecated-declarations]
    Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local<v8::Function>)dest->closure->fn, 2, data_argv);

    ^

    ../src/JPEGStream.h:71:112: 警告:不建议使用‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’(声明于 ../../nan/nan.h:959) [-Wdeprecated-declarations]
    Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local<v8::Function>)dest->closure->fn, 2, end_argv);

    ^

    ../src/Canvas.cc: 在静态成员函数‘static void Canvas::ToBufferAsyncAfter(uv_work_t*)’中:
    ../src/Canvas.cc:211:31: 警告:不建议使用‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’(声明于 ../../nan/nan.h:1674) [-Wdeprecated-declarations]

    closure->pfn->Call(1, argv); ^

    ../src/Canvas.cc:216:31: 警告:不建议使用‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’(声明于 ../../nan/nan.h:1674) [-Wdeprecated-declarations]

    closure->pfn->Call(2, argv); ^

    ../src/Canvas.cc: 在静态成员函数‘static Nan::NAN_METHOD_RETURN_TYPE Canvas::ToBuffer(Nan::NAN_METHOD_ARGS_TYPE)’中:
    ../src/Canvas.cc:325:14: 警告:不建议使用‘v8::TryCatch::TryCatch()’(声明于 /root/.node-gyp/8.15.1/include/node/v8.h:8371):Use isolate version [-Wdeprecated-declarations]

    TryCatch try_catch; ^

    ../src/Canvas.cc: 在函数‘cairo_status_t streamPNG(void, const uint8_t, unsigned int)’中:
    ../src/Canvas.cc:357:102: 警告:不建议使用‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’(声明于 ../../nan/nan.h:959) [-Wdeprecated-declarations]
    Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local<v8::Function>)closure->fn, 3, argv);

    ^

    ../src/Canvas.cc: 在静态成员函数‘static Nan::NAN_METHOD_RETURN_TYPE Canvas::StreamPNGSync(Nan::NAN_METHOD_ARGS_TYPE)’中:
    ../src/Canvas.cc:417:12: 警告:不建议使用‘v8::TryCatch::TryCatch()’(声明于 /root/.node-gyp/8.15.1/include/node/v8.h:8371):Use isolate version [-Wdeprecated-declarations]
    TryCatch try_catch;

    ^

    ../src/Canvas.cc:426:103: 警告:不建议使用‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’(声明于 ../../nan/nan.h:959) [-Wdeprecated-declarations]

    Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local<v8::Function>)closure.fn, 1, argv); ^

    ../src/Canvas.cc:432:103: 警告:不建议使用‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’(声明于 ../../nan/nan.h:959) [-Wdeprecated-declarations]

    Nan::MakeCallback(Nan::GetCurrentContext()->Global(), (v8::Local<v8::Function>)closure.fn, 1, argv); ^

    ../src/Canvas.cc: 在静态成员函数‘static Nan::NAN_METHOD_RETURN_TYPE Canvas::StreamJPEGSync(Nan::NAN_METHOD_ARGS_TYPE)’中:
    ../src/Canvas.cc:458:12: 警告:不建议使用‘v8::TryCatch::TryCatch()’(声明于 /root/.node-gyp/8.15.1/include/node/v8.h:8371):Use isolate version [-Wdeprecated-declarations]
    TryCatch try_catch;

    ^

    CXX(target) Release/obj.target/canvas/src/CanvasGradient.o
    CXX(target) Release/obj.target/canvas/src/CanvasPattern.o
    In file included from ../src/CanvasPattern.cc:9:0:
    ../src/Image.h:19:21: 致命错误:gif_lib.h:没有那个文件或目录
    #include <gif_lib.h>

    ^

    编译中断。
    make: * [Release/obj.target/canvas/src/CanvasPattern.o] 错误 1
    make: 离开目录“/root/express-ffmpeg/node_modules/canvas/build”
    gyp ERR! build error
    gyp ERR! stack Error: make failed with exit code: 2
    gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
    gyp ERR! stack at emitTwo (events.js:126:13)
    gyp ERR! stack at ChildProcess.emit (events.js:214:7)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
    gyp ERR! System Linux 3.10.0-957.el7.x86_64
    gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /root/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v8.15.1
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 (node_modules/canvas):
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 install: node-gyp rebuild
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

    up to date in 3.332s
    fixed 0 of 5 vulnerabilities in 831 scanned packages
    5 vulnerabilities required manual review and could not be updated
    [root@localhost express-ffmpeg]#

    1. Rat's
      @ki

      谷歌下错误

  15. adb

    这个只可以上传视频吗? 可以切指定文件夹的东西吗
    理想状态是切vps挂载的云盘
    或者大盘鸡已经下好的视频 貌似没这功能吧

    1. Rat's
      @adb

      可以将下载好的视频移到云转码目录的movies文件夹,然后在视频库点击导入,可以直接转码切片

      1. adb
        @Rat's

        32g内存 8HCPU 切一下午了 不是在waiting就是在trans&chunk
        是切得文件太大了? 4-6G单视频 mkv格式的
        博主可以看下我的站点 e.xiaohao.us

        1. Rat's
          @adb

          你这是VPS的配置吧,用独立服务器转码,而且快慢由cpu和分辨率大小决定,cpu性能越强越快,分辨率越小越快,而且要是单核cpu性能

          1. adb
            @Rat's

            今天换成了vultr Bare Metal
            Cpu E3-1270v6 8CPU 3.8GHZ 也是一样

            1. Rat's
              @adb

              建议你多了解下ffmpeg。

  16. qazwse11
    该评论仅登录用户及评论双方可见
    1. Rat's
      @qazwse11

      这个源码有点老,有空我看看,你看还能不能找点比较新的

      1. qazwse11
        @Rat's

        请问站长有没有速度好一点的动漫视频资源站。【现在网上的资源采集站太慢】

  17. 时间的历史

    不会安装的,可以看看我这个补充的教程,对常见问题的一个解决办法:http://www.feiji.work/?id=3

    1. Rat's
      @时间的历史

      其实更多的需要npm install这步如何能完美的安装成功,CPU 100%多半是npm install这步有问题,或者运行目录不对。

  18. kimi11

    在首页显示这个怎么回事?
    /root/express-ffmpeg/views/default/index.jade:18 16| .push-box 17| .push-img > 18| a(href="/movie/#{pushmovie.movieid._id}") 19| if pushmovie.movieid.poster 20| img(src="#{pushmovie.movieid.poster}") 21| else Cannot read property '_id' of null
    TypeError: /root/express-ffmpeg/views/default/index.jade:18

    16| .push-box 17| .push-img

    18| a(href="/movie/#{pushmovie.movieid._id}")

    19| if pushmovie.movieid.poster 20| img(src="#{pushmovie.movieid.poster}") 21| else

    Cannot read property '_id' of null

    at eval (eval at exports.compile (/root/express-ffmpeg/node_modules/jade/lib/index.js:218:8), <anonymous>:271:67) at eval (eval at exports.compile (/root/express-ffmpeg/node_modules/jade/lib/index.js:218:8), <anonymous>:388:4) at eval (eval at exports.compile (/root/express-ffmpeg/node_modules/jade/lib/index.js:218:8), <anonymous>:1033:22) at res (/root/express-ffmpeg/node_modules/jade/lib/index.js:219:38) at Object.exports.renderFile (/root/express-ffmpeg/node_modules/jade/lib/index.js:380:38) at Object.exports.renderFile (/root/express-ffmpeg/node_modules/jade/lib/index.js:370:21) at View.exports.__express [as engine] (/root/express-ffmpeg/node_modules/jade/lib/index.js:417:11) at View.render (/root/express-ffmpeg/node_modules/express/lib/view.js:135:8) at tryRender (/root/express-ffmpeg/node_modules/express/lib/application.js:640:10) at Function.render (/root/express-ffmpeg/node_modules/express/lib/application.js:592:3) at ServerResponse.render (/root/express-ffmpeg/node_modules/express/lib/response.js:1008:7) at /root/express-ffmpeg/controller/cms.js:71:11 at /root/express-ffmpeg/node_modules/async/dist/async.js:3888:9 at /root/express-ffmpeg/node_modules/async/dist/async.js:473:16 at iterateeCallback (/root/express-ffmpeg/node_modules/async/dist/async.js:992:24) at /root/express-ffmpeg/node_modules/async/dist/async.js:969:16 at /root/express-ffmpeg/node_modules/async/dist/async.js:3885:13 at /root/express-ffmpeg/controller/cms.js:38:13 at /root/express-ffmpeg/node_modules/mongoose/lib/model.js:4698:16 at /root/express-ffmpeg/node_modules/mongoose/lib/utils.js:263:16 at _hooks.execPost (/root/express-ffmpeg/node_modules/mongoose/lib/query.js:4074:11) at /root/express-ffmpeg/node_modules/kareem/index.js:135:16
    1. Rat's
      @kimi11

      这个看起来好像是你之前推荐过视频,然后删除造成的?是的话就再推荐几个,把删掉的补起来就好了

    2. kimi11
      @kimi11

      ssh报这个
      [root@vultr ~]# pm2 log
      [TAILING] Tailing last 15 lines for [all] processes (change the value with --lines option)
      /root/.pm2/pm2.log last 15 lines:
      PM2 | 2019-03-02T08:27:32: PM2 log: PM2 home : /root/.pm2
      PM2 | 2019-03-02T08:27:32: PM2 log: PM2 PID file : /root/.pm2/pm2.pid
      PM2 | 2019-03-02T08:27:32: PM2 log: RPC socket file : /root/.pm2/rpc.sock
      PM2 | 2019-03-02T08:27:32: PM2 log: BUS socket file : /root/.pm2/pub.sock
      PM2 | 2019-03-02T08:27:32: PM2 log: Application log path : /root/.pm2/logs
      PM2 | 2019-03-02T08:27:32: PM2 log: Process dump file : /root/.pm2/dump.pm2
      PM2 | 2019-03-02T08:27:32: PM2 log: Concurrent actions : 2
      PM2 | 2019-03-02T08:27:32: PM2 log: SIGTERM timeout : 1600
      PM2 | 2019-03-02T08:27:32: PM2 log: ===============================================================================
      PM2 | 2019-03-02T08:27:32: PM2 log: App [www:0] starting in -cluster mode-
      PM2 | 2019-03-02T08:27:32: PM2 log: App [www:0] online
      PM2 | 2019-03-02T08:58:51: PM2 log: App name:www id:0 disconnected
      PM2 | 2019-03-02T08:58:51: PM2 log: App [www:0] exited with code [0] via signal [SIGINT]
      PM2 | 2019-03-02T08:58:51: PM2 log: App [www:0] starting in -cluster mode-
      PM2 | 2019-03-02T08:58:51: PM2 log: App [www:0] online

      /root/.pm2/logs/www-error.log last 15 lines:
      0|www | (node:12123) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
      0|www | (node:12123) DeprecationWarning: collection.count is deprecated, and will be removed in a future version. Use collection.countDocuments or collection.estimatedDocumentCount instead
      0|www | (node:12123) DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
      0|www | Error: Cannot take screenshots: neither a count nor a timemark list are specified
      0|www | at FfmpegCommand.proto.takeScreenshots.proto.thumbnail.proto.thumbnails.proto.screenshot.proto.screenshots (/root/express-ffmpeg/node_modules/fluent-ffmpeg/lib/recipes.js:132:15)
      0|www | at /root/express-ffmpeg/helper/newffmpeg.js:177:18
      0|www | at /root/express-ffmpeg/node_modules/mongoose/lib/model.js:4698:16
      0|www | at /root/express-ffmpeg/node_modules/mongoose/lib/utils.js:263:16
      0|www | at _hooks.execPost (/root/express-ffmpeg/node_modules/mongoose/lib/query.js:4074:11)
      0|www | at /root/express-ffmpeg/node_modules/kareem/index.js:135:16
      0|www | at process._tickCallback (internal/process/next_tick.js:61:11)
      0|www | (node:13126) DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.
      0|www | (node:13126) DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
      0|www | (node:13126) DeprecationWarning: collection.count is deprecated, and will be removed in a future version. Use collection.countDocuments or collection.estimatedDocumentCount instead

      1. Rat's
        @kimi11

        这个看起来没啥问题。

  19. jiany

    [root@dcyksb express-ffmpeg]# npm install

    ^

    make: * [Release/obj.target/canvas/src/Canvas.o] 错误 1
    make: 离开目录“/www/wwwroot/bbs.dcyksb.com/express-ffmpeg/node_modules/canvas/build”
    gyp ERR! build error
    gyp ERR! stack Error: make failed with exit code: 2
    gyp ERR! stack at ChildProcess.onExit (/root/git/nvm/versions/node/v10.15.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
    gyp ERR! stack at ChildProcess.emit (events.js:189:13)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
    gyp ERR! System Linux 2.6.32-042stab134.3
    gyp ERR! command "/root/git/nvm/versions/node/v10.15.1/bin/node" "/root/git/nvm/versions/node/v10.15.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /www/wwwroot/bbs.dcyksb.com/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v10.15.1
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 (node_modules/canvas):
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 install: node-gyp rebuild
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

    audited 831 packages in 6.893s
    found 5 vulnerabilities (4 low, 1 high)
    run npm audit fix to fix them, or npm audit for details

    大佬这个是什么错误啊

    1. Rat's
      @jiany

      缺少依赖,不过运行完了就行,你先运行下程序,再使用pm2 log看下日志,然后再根据报错解决

  20. chanhey

    查看pm2日志显示

    Cannot process video: movies/舞蹈02《Sugar Free(无糖)》T-ara.movffmpeg exited with code 1: Conversion failed!
    0|www | (node:72581) DeprecationWarning: collection.count is deprecated, and will be removed in a future version. Use collection.countDocuments or collection.estimatedDocumentCount instead

    1. Rat's
      @chanhey

      这个不是问题,正常的报错。

  21. chanhey

    经常老是上传后点转码切片,服务器不执行ffmpeg转码,后台电影库里一直停留在trans&chunk,也不提示有什么错误...

    1. Rat's
      @chanhey

      设置问题,看下截图数那里,不能为0.

  22. 是我家宁子呀

    <html>
    <head><title>413 Request Entity Too Large</title></head>
    <body bgcolor="white">
    <center><h1>413 Request Entity Too Large</h1></center>
    <center>nginx/1.14.1</center>
    </body>
    </html>
    <!-- a padding to disable MSIE and Chrome friendly error page -->
    <!-- a padding to disable MSIE and Chrome friendly error page -->
    <!-- a padding to disable MSIE and Chrome friendly error page -->
    <!-- a padding to disable MSIE and Chrome friendly error page -->
    <!-- a padding to disable MSIE and Chrome friendly error page -->
    <!-- a padding to disable MSIE and Chrome friendly error page -->
    这个是什么错误啊

    1. Rat's
      @是我家宁子呀

      这个是nginx设置的body上传限制大小,要设置成大于4m

  23. 是我家宁子呀

    麻烦看一下这个是什么错误。PM2 错误日志显示的
    TypeError: Cannot read property 'usersystem' of undefined

    1. Rat's
      @是我家宁子呀

      这个是cms管理那里用户系统配置没保存

  24. A

    安装完毕,一切正常,然后登录后台,呵呵~502错误,看了博主的评论这是大部分人碰到的问题,却没有得到有效的解决

    1. Rat's
      @A

      502就是没安装成功,用下pm2 log看日志就知道了。

  25. 维他柠檬茶

    为什么创建并编辑 auth.js那里老是要报错啊

    1. Rat's
      @维他柠檬茶

      创建那里报错什么?

      1. 维他柠檬茶
        @Rat's

        commond not found

        1. Rat's
          @维他柠檬茶

          如果是centos系统的话,yum install nano -y就可以了

  26. 小迷糊

    高级版的安装脚本要付费吗

    1. Rat's
      @小迷糊

      这个其实是购买作者的高级版时赠送的脚本。

      1. 小迷糊
        @Rat's

        从你这儿买高级版多少钱啊

        1. Rat's
          @小迷糊

          我只是帮作者卖,便宜不了多少,有意的话可以加我留的微信。

  27. chanhey

    上传的影片一直waiting状态,不能转码,ffmpeg也有正确安装过了~

    1. Rat's
      @chanhey

      看下转码设置那里,截图数数量,一般最少为1,不然转码会有问题

  28. express-ffmpeg

    https://www.iqi360.com/category/5c386b74467870259b23b2e4

    express-ffmpeg官方技术支持

    Windows安装包已经开发结束

    1. Rat's
      @express-ffmpeg

      看来是时候公布我私藏很久的Linux一键脚本了。地址:https://www.iqi360.com/topic/5c431edf46eeb073833e356c

  29. MGe

    请问M3U8地址502是什么问题呢?

    1. Rat's
      @MGe

      直接访问的?看是不是防盗链的问题,只能播放器访问啥的,具体不是很清楚。

  30. 三番四复所发生

    虚拟机可以安装这个吗?

    1. Rat's
      @三番四复所发生

      应该不行。

  31. gscsds

    npm install
    提示这个怎么解决?
    found 4 vulnerabilities (3 low, 1 high)
    run npm audit fix to fix them, or npm audit for details

    1. Rat's
      @gscsds

      说npm有漏洞,要你修复,修复的命令已经给你了,npm audit fix。

      1. gscsds
        @Rat's

        弄好了,我用的是虚拟机,需要在虚拟机启动而不能再SSH那启动,搞不懂

        1. Rat's
          @gscsds

          直接用VPS服务器吧。

          1. gscsds
            @Rat's

            双十一双十二剁手到我已经把毒服取消了

            1. Rat's
              @gscsds

              没事,买买买!

  32. 行道

    站点配置之后,转码的状态是trans&chunk,分享的链接是404,请问是什么问题:
    Not Found
    404
    NotFoundError: Not Found

    1. 行道
      @行道 at /root/express-ffmpeg/app.js:265:8 at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at /root/express-ffmpeg/node_modules/connect-flash/lib/flash.js:21:5 at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at /root/express-ffmpeg/app.js:250:3 at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at SendStream.error (/root/express-ffmpeg/node_modules/serve-static/index.js:121:7) at emitOne (events.js:116:13) at SendStream.emit (events.js:211:7) at SendStream.error (/root/express-ffmpeg/node_modules/send/index.js:270:17)
      1. Rat's
        @行道

        这种错误貌似是没装好。

  33. 行道

    安装教程做了一遍,站点配置完了之后,打开域名是502,不懂问题出在哪里。

    1. 行道
      @行道

      问题找到了,缺少安装 redis,教程好像缺少这步骤,我是在宝塔安装 redis,就可以登陆系统了。

      1. Rat's
        @行道

        眼睛看哪了,安装宝塔那步就写了。

        1. 行道
          @Rat's

          不好意思,看走眼了。

  34. wowowowo

    secret是session需要的秘钥,这句怎么理解?secret: "yoursecret",这个里面填什么呢

    1. Rat's
      @wowowowo

      这个参数其实我也不大懂,不用管就行了。

  35. 123

    有没有什么办法让视频从头一直缓冲到尾 而不是每次只缓冲一点点 播放长视频老是会卡住

    1. 爱看动漫的小梁
      @123

      http直链调用也可以,这个不需要你搭建什么东西,你只需要ftp服务器环境即可

    2. 爱看动漫的小梁
      @123

      那你就这样,把视频上传到服务器,采用ftp方式调用

    3. Rat's
      @123

      卡说明本地到服务器网络不是很好。解决方法换个网络好点的服务器,或者装个锐速或BBR。

      1. 123
        @Rat's

        这个我知道但是并不容易解决 服务器和网络 这个涉及到高成本了 我记得以前就可以直接缓冲完整个视频 后来改成每次一点了 改代码可比加钱容易多了/滑稽 就是不知道要改哪里

        1. Rat's
          @123

          这个我不是很清楚,只知道加钱可及!

  36. 爱看动漫的小梁

    对了,微信可否一加?

  37. 爱看动漫的小梁

    奇怪?腾讯云
    版本号:CentOS Linux 7.2.1511 (Core)
    远程ssh会显示:root@VM_8_20_centos ~
    耗时:38分钟完成云转码的全部安装,环境全部由宝塔完成安装。
    我靠!看来宝塔对腾讯云的主机兼容性真心好,云转码启动完全无任何问题!

  38. 爱看动漫的小梁

    如果npm命令到一半卡住不动怎么解决

    1. Rat's
      @爱看动漫的小梁

      断开重新运行,或者等。

      1. 爱看动漫的小梁
        @Rat's

        那个,腾讯云只需要38分钟就完全安装并运行

      2. 爱看动漫的小梁
        @Rat's

        duan kai重新运行是什么意思

      3. 爱看动漫的小梁
        @Rat's

        我等了几个小时

  39. 爱看动漫的小梁

    妈耶,不用宝塔安装PM2了,上次利用腾讯云实验室也就是体验1小时机器,都可以在一小时内完成安装环境与云转码,但我等了3小时还是卡在NOW Using node v10.14.1(npm v6.4.1)这就不动了,MongoDB我觉得勉强可以继续宝塔,但PM2老是卡住,已经耗了2天了

    1. Rat's
      @爱看动漫的小梁

      Mongodb用宝塔问题不大,Nodejs手动安装可以解决很多问题。

  40. 爱看动漫的小梁

    要想成功安装云转码,并且运行不占100%
    01.多尝试安装宝塔与环境,直到云转码启动正常不占用100%(CPU)。
    02.手动安装环境为最佳!

    友情说明:我那次上传了48个视频,完美运行(已重装宝塔与环境还有云转码n次)

    1. 落伍者
      @爱看动漫的小梁

      各种失败,docker成功。一直想手动弄环境,可是一直没成功

      1. 爱看动漫的小梁
        @落伍者

        相信我,手动比容器模式好多,但前提是,你经得起折磨,经不起就勉为其难的容器模式吧!

      2. Rat's
        @落伍者

        这个要是不容易出错的话,我也不会专门花时间做Docker镜像。

    2. Rat's
      @爱看动漫的小梁

      辛苦了,这个提示等后面的人看到吧。

  41. 爱看动漫的小梁

    前天由于存储硬盘分区扩容失败后,已经对虚拟机进行了重新安装云转码,结果,启动100%CPU,要么就是安装命令一直卡在一个地方,要么宝塔MongoDB数据库建立成功却不显示已创建的数据库要么PM2异常安装,看来是宝塔各种问题导致就算安装成功,启动云转码也是100%CPU!

    1. Rat's
      @爱看动漫的小梁

      是的,有时候宝塔对这些是有些问题,但对于会玩的来说,不算啥问题,手动方法我已经写在文章最后面了,你可以看下。

      1. 爱看动漫的小梁
        @Rat's

        会玩的,压根没问题,对于我们这些不熟悉的人来说,不太好搞!

        1. Rat's
          @爱看动漫的小梁

          所以我额外在下面补了部分手动教程,基本上坑都在那里。

  42. 阿远

    我的N遍错误。

    1. Rat's
      @阿远

      看来宝塔不是很适合装Nodejs和Mongodb,我加点手动教程吧。

      1. 小飞飞飞飞飞
        @Rat's

        是不是不需要用宝塔安装PM2管理器了呀
        secret: "yoursecret", 这个要替换吗。。。
        求指点 。。。。。。。。

        1. Rat's
          @小飞飞飞飞飞

          是的,不需要安装pm2了。

          1. 小飞飞飞飞飞
            @Rat's

            自动截图正常。。。视频也显示了 就是不能播放视频。点击播放没啥反应,,。。
            大佬这是那的姿势不对呀

            1. Rat's
              @小飞飞飞飞飞

              设置那里要设置下播放器。

  43. shaoye

    终于搭建成功了 但是404页面 又爆出at /root/express-ffmpeg/app.js:265:8

    at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at /root/express-ffmpeg/node_modules/connect-flash/lib/flash.js:21:5 at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at /root/express-ffmpeg/app.js:250:3 at Layer.handle [as handle_request] (/root/express-ffmpeg/node_modules/express/lib/router/layer.js:95:5) at trim_prefix (/root/express-ffmpeg/node_modules/express/lib/router/index.js:317:13) at /root/express-ffmpeg/node_modules/express/lib/router/index.js:284:7 at Function.process_params (/root/express-ffmpeg/node_modules/express/lib/router/index.js:335:12) at next (/root/express-ffmpeg/node_modules/express/lib/router/index.js:275:10) at SendStream.error (/root/express-ffmpeg/node_modules/serve-static/index.js:121:7) at emitOne (events.js:115:13) at SendStream.emit (events.js:210:7) at SendStream.error (/root/express-ffmpeg/node_modules/send/index.js:270:17
    1. Rat's
      @shaoye

      这个问题不是很清楚,多半还是安装有点小瑕疵。

  44. shaoye

    装了几遍全程无报错,依旧502 官方活了NG反代会报502 执行一段 代码 就可以 但是依旧包错502 ,泪奔啊

    1. Rat's
      @shaoye

      那就是姿势有点小问题了,我都一次成功。

  45. soradaisuki

    点击转码就报错
    at ChildProcess.<anonymous> (/root/express-ffmpeg/node_modules/fluent-ffmpeg/lib/ffprobe.js:233:22)

    at emitTwo (events.js:125:13) at ChildProcess.emit (events.js:213:7) at Process.ChildProcess._handle.onexit (internal/child_process.js:197:12)
    events.js:182

    throw er; // Unhandled 'error' event ^
    TypeError: Cannot read property 'format' of undefined

    at /root/express-ffmpeg/helper/listsffmpeg.js:48:35 at /root/express-ffmpeg/node_modules/mongoose/lib/model.js:4518:16 at (anonymous function).call (/root/express-ffmpeg/node_modules/mongoose/lib/query.js:3800:7) at process.nextTick (/root/express-ffmpeg/node_modules/mongoose/lib/helpers/query/completeMany.js:35:39) at _combinedTickCallback (internal/process/next_tick.js:95:7) at process._tickCallback (internal/process/next_tick.js:161:9)

    1. soradaisuki
      @soradaisuki

      懂了 原来是没有找到文件,应该是上传的时候出了问题吧

      1. soradaisuki
        @soradaisuki

        宝塔的pm2有点问题...

        1. Rat's
          @soradaisuki

          感觉pm2和mongodb都有点问题

      2. Rat's
        @soradaisuki

        你可以看下movie文件夹有不有上传的视频,然后检查下有不有可读权限。

        1. soradaisuki
          @Rat's

          之前问题是解决了,但是视频播放只有封面23333,声音倒是有的

          1. Rat's
            @soradaisuki

            这个倒不是很清楚,使用方面没深入研究。

        2. 爱看动漫的小梁
          @Rat's

          不正常,因为我都注意数据变化,转码时CPU多少,不转码时是多少

  46. 爱看动漫的小梁

    安装成功,已上传4个视频,但vm状态下,需要快照来维持状态,要不然可能出现CPU100%

    1. Rat's
      @爱看动漫的小梁

      恭喜,这是折腾个把月了吧,貌似cpu100%很正常

  47. 爱看动漫的小梁

    为什么CentOS 7 64 还是报错这个?
    gyp ERR! build error
    gyp ERR! stack Error: make failed with exit code: 2
    gyp ERR! stack at ChildProcess.onExit (/www/server/nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
    gyp ERR! stack at ChildProcess.emit (events.js:182:13)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12)
    gyp ERR! System Linux 3.10.0-862.el7.x86_64
    gyp ERR! command "/www/server/nvm/versions/node/v10.13.0/bin/node" "/www/server/nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /root/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v10.13.0
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok

    1. wowowowo
      @爱看动漫的小梁

      怎么解决的?我就是这个错误,装了好几次

      1. Rat's
        @wowowowo

        卸载pm2,用文章下面的方法手动安装nodejs。

        1. wowwoo
          @Rat's

          删除PM2试过了,全部都是手动安装,依然报错
          gyp ERR! configure error
          gyp ERR! stack Error: gyp failed with exit code: 1
          网上有人说是gcc版本的问题,升级到5.5问题依然没有解决
          还有人删除node-gyp,都试过了,没有用,我是centos7,卡在这里2天了
          现在准备换NODE版本试试,解决过这个问题的能不能说说是什么原因

          1. Rat's
            @wowwoo

            重新来,别安装pm2,直接手动nodejs。

            1. wowowow
              @Rat's

              从头来还是这个报错,没有装PM2
              应该跟GCC的版本有关,我的是4.8
              网上说要5以上的

              1. Rat's
                @wowowow

                是CentOS 7吗?我记得我在很多台的C7的服务器上面都一次性装成功了,并没有遇到gcc版本的问题。

                1. 往往
                  @Rat's

                  各种centos7版本都报这个错,要手动安装各种cairo cairo-devel cairomm-devel等等
                  好多,终于不报错了,尼玛又卡在要下载什么模块
                  sharp@0.20.8 install /www/wwwroot/express-ffmpeg/node_modules/sharp
                  (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
                  info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.6.1/libvips-8.6.1-linux-x64.tar.gz
                  用V7N才能下载,最后总算搞好了,npm install终于不报错了
                  打开后台无法连接,你们安装感觉好简单

                  1. Rat's
                    @往往

                    安装方法确实挺简单的,但就是容易出错。

    2. 感谢
      @爱看动漫的小梁

      gyp ERR! configure error
      gyp ERR! stack Error: gyp failed with exit code: 1
      gyp ERR! stack at ChildProcess.onCpExit (/www/server/nvm/versions/node/v8.3.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:336:16)
      gyp ERR! stack at emitTwo (events.js:125:13)
      gyp ERR! stack at ChildProcess.emit (events.js:213:7)
      gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
      gyp ERR! System Linux 4.12.9-041209-generic
      gyp ERR! command "/www/server/nvm/versions/node/v8.3.0/bin/node" "/www/server/nvm/versions/node/v8.3.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
      gyp ERR! cwd /www/wwwroot/express-ffmpeg/node_modules/canvas
      gyp ERR! node -v v8.3.0
      gyp ERR! node-gyp -v v3.6.2
      gyp ERR! not ok

      1. Rat's
        @感谢

        我加点手动教程吧,应该就可以解决了。

    3. 感谢
      @爱看动漫的小梁

      我的问题和你一样,请问你是怎么解决的

  48. 虾哈

    为什么进不了后台,输入密码后跳转到百度了。

    1. Rat's
      @虾哈

      因为你密码输入错误,就会直接跳百度

  49. 123

    为啥视频状态不更新呢 明明已经转完了
    开了秒切就是chunking 关闭秒切就是trans&chunk
    完成后cpu负载是0% 进文件夹里看已经转好切好了 但是状态就是不更新finished
    点分享也点不了

    1. 123
      @123

      直接用链接打开视频是一片黑的

      1. Rat's
        @123

        会不会是你后台没设置好?比如截图数啥的,使用pm2 log查看下日志。

        1. 123
          @Rat's

          截图数是0 等了好一会 状态一直显示chunking 实际上已经切好了 cpu也一直是0% 然后复制链接可以播了 过了一天去看状态还是chunking 但不影响播放 算是搞定了 谢谢你的教程 下一步就是找个网络快的服务器了 不然上传视频太慢

          1. Rat's
            @123

            截图貌似不能为0,下次你可以试试我那个docker镜像?https://www.moerats.com/archives/782

            1. 123
              @Rat's

              我是分享到其他网站播放 不用自带cms 所以截图没用吧
              docker有机会再试 先找服务器 大硬盘国内网络快的 有推荐吗

              1. Rat's
                @123

                看看这个,cn2 gia便宜的大硬盘https://www.moerats.com/archives/748/。

                1. 123
                  @Rat's

                  收藏了 看看他们黑五有没有优惠

                  1. Rat's
                    @123

                    他那个大盘鸡就是特价。

                    1. 123
                      @Rat's

                      他们这大盘鸡 允许资源长期满载吗 如果要转码 cpu长期跑满 播视频网络也会大量占用 不会封吗?

                      1. Rat's
                        @123

                        他们的老板很好说话,你可以工单问下。

  50. 海天

    博主 有没有类似的好的 PDF管理程序啊 推荐个啊 万分感谢

    1. Rat's
      @海天

      这个我得注意下,知道了回复你,有邮件通知。

  51. 123
    运行npm install错误 node版本 v8.0 v8.1都试过了

    gyp ERR! build error
    gyp ERR! stack Error: make failed with exit code: 2
    gyp ERR! stack at ChildProcess.onExit (/www/server/nvm/versions/node/v8.0.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:285:23)
    gyp ERR! stack at emitTwo (events.js:125:13)
    gyp ERR! stack at ChildProcess.emit (events.js:213:7)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:197:12)
    gyp ERR! System Linux 2.6.32-042stab129.1
    gyp ERR! command "/www/server/nvm/versions/node/v8.0.0/bin/node" "/www/server/nvm/versions/node/v8.0.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /root/express-ffmpeg/node_modules/sharp
    gyp ERR! node -v v8.0.0
    gyp ERR! node-gyp -v v3.6.1
    gyp ERR! not ok
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! sharp@0.20.8 install: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the sharp@0.20.8 install script.

    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

    log日志
    1743 verbose stack Error: sharp@0.20.8 install: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
    1750 error code ELIFECYCLE
    1751 error errno 1
    1752 error sharp@0.20.8 install: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
    1752 error Exit status 1
    1753 error Failed at the sharp@0.20.8 install script.
    1753 error This is probably not a problem with npm. There is likely additional logging output above.

    1. 123
      @123

      网上搜了其他教程 有人说云转码更新了 教程不起作用了

      1. Rat's
        @123

        我这个管用的,一直尽量保证最新。

        1. 123
          @Rat's

          那能不能看一下我上面的错误日志是什么原因?
          Failed at the sharp@0.20.8 install script 脚本错误?

          1. Rat's
            @123

            你这是缺少点依赖,而且错误日志关键地方貌似没留,还有系统是什么。

  52. 猫猫

    make: * [Release/obj.target/canvas/src/Canvas.o] Error 1
    make: Leaving directory `/root/express-ffmpeg/node_modules/node-sprite-generator/node_modules/canvas/build'
    gyp ERR! build error
    gyp ERR! stack Error: make failed with exit code: 2
    gyp ERR! stack at ChildProcess.onExit (/www/server/nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
    gyp ERR! stack at ChildProcess.emit (events.js:182:13)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12)
    gyp ERR! System Linux 3.10.0-862.3.2.el7.x86_64
    gyp ERR! command "/www/server/nvm/versions/node/v10.13.0/bin/node" "/www/server/nvm/versions/node/v10.13.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /root/express-ffmpeg/node_modules/node-sprite-generator/node_modules/canvas
    gyp ERR! node -v v10.13.0
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 (node_modules/node-sprite-generator/node_modules/canvas):
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 install: node-gyp rebuild
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

    audited 893 packages in 3.411s
    found 4 vulnerabilities (3 low, 1 high)
    run npm audit fix to fix them, or npm audit for details

    1. Rat's
      @猫猫

      这个错误不全,建议你在宝塔软件管理的pm2,把nodejs版本调到v8,然后再有错误可以留下言,别留太多,只需要Error字符出现的上下几排。

  53. 爱看动漫的小梁

    请问vm的虚拟机可以安装吗

    1. Rat's
      @爱看动漫的小梁

      这个没试过。

  54. 爱看动漫的小梁

    secret是session需要的秘钥
    这个复制代码即可???

  55. ThinkVN

    please tell me, state watting longtime
    thanks.

    1. Rat's
      @ThinkVN

      what?

  56. 爱看动漫的小梁

    CXX(target) Release/obj.target/canvas/src/CanvasGradient.o
    CXX(target) Release/obj.target/canvas/src/CanvasPattern.o
    In file included from ../src/CanvasPattern.cc:9:0:
    ../src/Image.h:19:21: 致命错误:gif_lib.h:没有那个文件或目录
    #include <gif_lib.h>

    ^

    编译中断。
    make: * [Release/obj.target/canvas/src/CanvasPattern.o] 错误 1
    make: 离开目录“/www/wwwroot/express-ffmpeg/node_modules/canvas/build”
    gyp ERR! build error
    gyp ERR! stack Error: make failed with exit code: 2
    gyp ERR! stack at ChildProcess.onExit (/www/server/nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
    gyp ERR! stack at emitTwo (events.js:126:13)
    gyp ERR! stack at ChildProcess.emit (events.js:214:7)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
    gyp ERR! System Linux 3.10.0-862.el7.x86_64
    gyp ERR! command "/www/server/nvm/versions/node/v8.12.0/bin/node" "/www/server/nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /www/wwwroot/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v8.12.0
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok

    sharp@0.20.8 install /www/wwwroot/express-ffmpeg/node_modules/sharp
    (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)

    info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.6.1/libvips-8.6.1-linux-x64.tar.gz
    npm notice created a lockfile as package-lock.json. You should commit this file.
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 (node_modules/canvas):
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 install: node-gyp rebuild
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

    added 385 packages from 408 contributors and audited 796 packages in 1127.664s
    found 4 vulnerabilities (3 low, 1 high)
    run npm audit fix to fix them, or npm audit for details

    这次是centos 7 64位

    1. Rat's
      @爱看动漫的小梁

      我刚测试的无任何问题,教程的一些细节我也加了点,你还是检查下你的操作吧。

      1. 爱看动漫的小梁
        @Rat's

        请问,你的CentOS 7是什么版本!

        1. Rat's
          @爱看动漫的小梁

          CentOS 7系统。

          1. 爱看动漫的小梁
            @Rat's

            请问,宝塔安装那四个环境,极速安装还是编译安装?

            1. Rat's
              @爱看动漫的小梁

              先极速,有问题就编译。

    2. Rat's
      @爱看动漫的小梁

      我晚上试试看吧。

  57. 爱看动漫的小梁

    安装报错啊
    root@ubuntu:/www/wwwroot/express-ffmpeg# npm install
    npm WARN deprecated crypto@1.0.1: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.
    npm WARN deprecated jade@1.11.0: Jade has been renamed to pug, please install the latest version of pug instead of jade
    npm WARN deprecated constantinople@3.0.2: Please update to at least constantinople 3.1.1
    npm WARN deprecated transformers@2.1.0: Deprecated, use jstransformer
    npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue

    canvas@1.3.12 install /www/wwwroot/express-ffmpeg/node_modules/canvas
    node-gyp rebuild

    Package cairo was not found in the pkg-config search path.
    Perhaps you should add the directory containing `cairo.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'cairo' found
    gyp: Call to './util/has_lib.sh freetype' returned exit status 0 while in binding.gyp. while trying to load binding.gyp
    gyp ERR! configure error
    gyp ERR! stack Error: gyp failed with exit code: 1
    gyp ERR! stack at ChildProcess.onCpExit (/www/server/nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:345:16)
    gyp ERR! stack at emitTwo (events.js:126:13)
    gyp ERR! stack at ChildProcess.emit (events.js:214:7)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
    gyp ERR! System Linux 4.15.0-29-generic
    gyp ERR! command "/www/server/nvm/versions/node/v8.12.0/bin/node" "/www/server/nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /www/wwwroot/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v8.12.0
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok

    sharp@0.20.8 install /www/wwwroot/express-ffmpeg/node_modules/sharp
    (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)

    info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.6.1/libvips-8.6.1-linux-x64.tar.gz
    npm notice created a lockfile as package-lock.json. You should commit this file.
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 (node_modules/canvas):
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: canvas@1.3.12 install: node-gyp rebuild
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

    added 385 packages from 408 contributors in 123.028s
    root@ubuntu:/www/wwwroot/express-ffmpeg#

    是gyp开头的报错

    1. Rat's
      @爱看动漫的小梁

      有点像gcc问题,安装下开发者工具包看看,yum -y groupinstall "Development Tools",再有问题建议百度一下。

      1. 爱看动漫的小梁
        @Rat's

        我用的还是Ubuntu 64位系统,这个命令真的合适吗

        1. Rat's
          @爱看动漫的小梁

          忘了,我以为你会按照我的建议用CentOS 7。

  58. 爱看动漫的小梁

    版本貌似都更新了,这个教程还有效吗?我安装还是有几处提示错误的gyp ERR!

    1. Rat's
      @爱看动漫的小梁

      看了下源码,这个安装教程没啥问题,你可以去研究下官方文档https://ffmpeg.moejj.com/guide/install.html。

  59. 爱看动漫的小梁

    最新安装出新
    gyp ERR! stack at emitTwo (events.js:87:13)
    gyp ERR! stack at ChildProcess.emit (events.js:172:7)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
    gyp ERR! System Linux 4.15.0-29-generic
    gyp ERR! command "/usr/bin/nodejs" "/usr/bin/node-gyp" "rebuild"
    gyp ERR! cwd /www/wwwroot/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v4.2.6
    gyp ERR! node-gyp -v v3.0.3
    gyp ERR! not ok
    npm WARN install:canvas@1.3.12 canvas@1.3.12 install: node-gyp rebuild
    npm WARN install:canvas@1.3.12 Exit status 1

    sharp@0.20.8 install /www/wwwroot/express-ffmpeg/node_modules/sharp
    (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)

    sh: node: 未找到命令
    /bin/sh: node: 未找到命令
    gyp: Call to 'node -e "console.log(require('./lib/libvips').pkgConfigPath())"' returned exit status 127 while in binding.gyp. while trying to load binding.gyp
    gyp ERR! configure error
    gyp ERR! stack Error: gyp failed with exit code: 1
    gyp ERR! stack at ChildProcess.onCpExit (/usr/share/node-gyp/lib/configure.js:354:16)
    gyp ERR! stack at emitTwo (events.js:87:13)
    gyp ERR! stack at ChildProcess.emit (events.js:172:7)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
    gyp ERR! System Linux 4.15.0-29-generic
    gyp ERR! command "/usr/bin/nodejs" "/usr/bin/node-gyp" "rebuild"
    gyp ERR! cwd /www/wwwroot/express-ffmpeg/node_modules/sharp
    gyp ERR! node -v v4.2.6
    gyp ERR! node-gyp -v v3.0.3
    gyp ERR! not ok
    npm ERR! Linux 4.15.0-29-generic
    npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
    npm ERR! node v4.2.6
    npm ERR! npm v3.5.2
    npm ERR! code ELIFECYCLE

    npm ERR! sharp@0.20.8 install: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the sharp@0.20.8 install script '(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)'.
    npm ERR! Make sure you have the latest version of node.js and npm installed.
    npm ERR! If you do, this is most likely a problem with the sharp package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR! (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
    npm ERR! You can get information on how to open an issue for this project with:
    npm ERR! npm bugs sharp
    npm ERR! Or if that isn't available, you can get their info via:
    npm ERR! npm owner ls sharp
    npm ERR! There is likely additional logging output above.

    npm ERR! Please include the following file with any support request:
    npm ERR! /www/wwwroot/express-ffmpeg/npm-debug.log
    Ubuntu 64位系统

    1. Rat's
      @爱看动漫的小梁

      提示node命令未找到,你可以去面板管理那里卸载pm2,再重新安装,建议你使用CentOS系统。

  60. gscsds

    大佬,后台登录提示此页面不能正确地重定向

    1. Rat's
      @gscsds

      是打不开么?检查下域名设置什么的看看。

      1. gscsds
        @Rat's

        不是,是在admin/下输入正确的账号密码后就会无限重定向,直接ip访问也是这样

        1. Rat's
          @gscsds

          这个问题还没遇到过,你清空缓存看看?

          1. gscsds
            @Rat's

            清空过,火狐的隐私模式,和换浏览器都一样

            1. Rat's
              @gscsds

              这个就不是很清楚了。

              1. gscsds
                @Rat's

                后台登录页不能是admin,会无限跳转,终于知道了

                1. Rat's
                  @gscsds

                  是的,我也发现了,所以我下午改了下教程。

  61. 咔嚓

    请问这个错误实怎么回事啊
    Package cairo was not found in the pkg-config search path.
    Perhaps you should add the directory containing `cairo.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'cairo' found
    gyp: Call to './util/has_lib.sh freetype' returned exit status 0 while in binding.gyp. while trying to load binding.gyp
    gyp ERR! configure error
    gyp ERR! stack Error: gyp failed with exit code: 1
    gyp ERR! stack at ChildProcess.onCpExit (/www/server/nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:345:16)
    gyp ERR! stack at emitTwo (events.js:126:13)
    gyp ERR! stack at ChildProcess.emit (events.js:214:7)
    gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
    gyp ERR! System Linux 4.4.0-28-generic
    gyp ERR! command "/www/server/nvm/versions/node/v8.12.0/bin/node" "/www/server/nvm/versions/node/v8.12.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /root/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v8.12.0
    gyp ERR! node-gyp -v v3.8.0
    gyp ERR! not ok

    1. Rat's
      @咔嚓

      什么系统?CentOS的话可以yum install cairo cairo-devel -y,Debian可以试试apt-get install libcairo2-dev libjpeg-dev libgif-dev -y

  62. 海天

    博主 有没有文档、pdf和这个视频功能一整套的系统推荐啊

    1. Rat's
      @海天

      暂时没发现。

  63. 寒惜

    第三步那里 执行了npm install express -gd
    出现
    -bash: npm: command not found
    想问下博主这个怎么解决?百度谷歌了一圈还是没解决。。

    1. Rat's
      @寒惜

      面板安装PM2管理器后需要重新进入ssh才行。

  64. 墨池

    创建并编辑auth.js配置文件:
    ssh输入这个nano auth.js提示
    -bash: nano: command not found
    怎么办

    1. Rat's
      @墨池

      善用搜索,缺少nano命令,yum install nano -y。

  65. 墨池

    大佬 能出个视频教程就好了!

  66. sam

    gyp WARN install got an error, rolling back install
    gyp ERR! configure error
    gyp ERR! stack Error: This is most likely not a problem with node-gyp or the package itself and
    gyp ERR! stack is related to network connectivity. In most cases you are behind a proxy or have bad
    gyp ERR! stack network settings.
    gyp ERR! stack at Request.<anonymous> (/www/server/nvm/versions/node/v8.11.3/lib/node_modules/npm/node_modules/node-gyp/lib/install.js:193:21)
    gyp ERR! stack at emitOne (events.js:116:13)
    gyp ERR! stack at Request.emit (events.js:211:7)
    gyp ERR! stack at Request.onRequestError (/www/server/nvm/versions/node/v8.11.3/lib/node_modules/npm/node_modules/request/request.js:878:8)
    gyp ERR! stack at emitOne (events.js:116:13)
    gyp ERR! stack at ClientRequest.emit (events.js:211:7)
    gyp ERR! stack at TLSSocket.socketErrorListener (_http_client.js:387:9)
    gyp ERR! stack at emitOne (events.js:116:13)
    gyp ERR! stack at TLSSocket.emit (events.js:211:7)
    gyp ERR! stack at emitErrorNT (internal/streams/destroy.js:64:8)
    gyp ERR! System Linux 3.10.0-862.3.2.el7.x86_64
    gyp ERR! command "/www/server/nvm/versions/node/v8.11.3/bin/node" "/www/server/nvm/versions/node/v8.11.3/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /root/express-ffmpeg/node_modules/canvas
    gyp ERR! node -v v8.11.3
    gyp ERR! node-gyp -v v3.6.2
    gyp ERR! not ok

    1. Rat's
      @sam

      试下这个命令:export ATOM_NODE_URL=http://gh-contractor-zcbenz.s3.amazonaws.com/atom-shell/dist。然后再安装。

  67. 仙侠

    全部按照步骤执行完,然后网站还是打不开,IP和反代地址都打不开

    1. Rat's
      @仙侠

      建议用CentOS7系统,然后照着教程一步步来,中途出现问题可以留言。

      1. 仙侠
        @Rat's

        就是centos7

        1. Rat's
          @仙侠

          如果所有操作没出现错误提示的话,你检查下数据库什么的在线不,还不行的话就没法了。

  68. 爱看动漫的小梁

    一直100

  69. 爱看动漫的小梁

    转码如何取消吧

    1. Rat's
      @爱看动漫的小梁

      这个自己可以研究下,我搭建好了,就测了下转码就没管了。

      1. 爱看动漫的小梁
        @Rat's

        这,怎么办,CPU100%了

        1. Rat's
          @爱看动漫的小梁

          转码的时候是100%,还是一直这样

  70. 爱看动漫的小梁

    怎么样的才能完美不影响

  71. 爱看动漫的小梁

    求推荐配置

    1. Rat's
      @爱看动漫的小梁

      这个我也说不清楚哪个好,应该是越贵越好。

  72. 爱看动漫的小梁

    重新启动系统,然后重新运行启动命令又是CPU100%,502 Bad Gateway

    1. Rat's
      @爱看动漫的小梁

      应该转码的时候吃配置,其它的你自己慢慢琢磨吧。

  73. 爱看动漫的小梁

    视频上传的大小是14.5兆

  74. 爱看动漫的小梁

    后台提示视频状态是:chunking

  75. 爱看动漫的小梁

    视频上传成功,但是访问视频连接就提示:502 Bad Gateway

  76. 爱看动漫的小梁

    Redis需要配置吗

    1. Rat's
      @爱看动漫的小梁

      不需要。

  77. 爱看动漫的小梁

    报错提示:502 Bad Gateway

    1. Rat's
      @爱看动漫的小梁

      我这两天有空重新安装一遍看看。

      1. 爱看动漫的小梁
        @Rat's

        嗯嗯,非常感谢,希望提详细点,例如:哪些文件是不能乱放的,指定要放哪个文件夹的!

        1. Rat's
          @爱看动漫的小梁

          刚用CentOS 7试了下,没啥问题,就是最新版的需要多装个Redis,直接在软件管理安装就可以了,你再重新试试吧。

          1. 爱看动漫的小梁
            @Rat's

            好吧

  78. 爱看动漫的小梁

    ubuntu-16.04表示这里:6、安装并运行云转码》》cd /root/express-ffmpeg!!
    这个提示了没有那个文件或目录

    1. Rat's
      @爱看动漫的小梁

      配置云转码那步做了吧?你看那个源码文件在哪个文件夹,就进入到哪个文件夹操作。

      1. 爱看动漫的小梁
        @Rat's

        了解

  79. 天城

    全程无错,web打不开!

    1. Rat's
      @天城

      能进去后台地址么?还去面板上检查下mongodb数据库是否是开启状态。

      1. 天城
        @Rat's

        不行啊!web打不开后台也一样链接失败!然后cpu百分百 我是独服!

        1. 爱看动漫的小梁
          @天城

          ubuntu-16.04.5系统搭建成功,可惜www.ayypd.com/admin提示502错误,我也是CPU百分百!

          1. Rat's
            @爱看动漫的小梁

            你什么配置,502看下nginx运行没。

            1. 爱看动漫的小梁
              @Rat's

              1G2H20GB,表示运行着的 服务器机器为虚拟机搭建

        2. Rat's
          @天城

          mongodb数据库是开启的么?或者你安装的时候有没有出现哪里报错?

          1. 天城
            @Rat's

            全程无错!数据库开启了

            1. Rat's
              @天城

              这个就不是很清楚了,毕竟看不到日志,不知道哪里有问题。

              1. 天城
                @Rat's

                现在搭建好了,请问下播放器右键信息在哪修改啊?全文搜索也没找到!

                1. Rat's
                  @天城

                  这个不是很清楚,一般我只是搭建好了,测试下基本功能就没管了。

  80. 爱看动漫的小梁

    博主,有没有群号?我想加群

    1. Rat's
      @爱看动漫的小梁

      不建群。

  81. 爱看动漫的小梁

    大神,第七步的反代添加网站怎么搞?你得说清楚添加哪个文件夹作为网站啊!

    1. Rat's
      @爱看动漫的小梁

      不需要添加文件夹,直接反代http://127.0.0.1:3000就可以了。

      1. 是粉色的
        @Rat's

        3000端口必须对外开放的嘛

        1. Rat's
          @是粉色的

          如果你用ip访问就需要开放3000,用域名访问的话,只需要反代一下,不需要开放300端口

  82. kevin

    我用的是宝塔Centos来测试,测试不成功
    6、安装并运行云转码

    cd /root/express-ffmpeg
    npm install
    到这一步就报错了
    请博主支持,谢谢

  83. 惜情

    Centos宝塔测试失败 运行不起来

    1. Rat's
      @惜情

      你哪个步骤出现了问题?我就是用centos系统测试的。

      1. 爱看动漫的小梁
        @Rat's

        能否告诉我,你的centos是什么版本?测试成功的版本系统

        1. Rat's
          @爱看动漫的小梁

          我6/7都成功过,还有debian,不过是vultr的系统。

      2. 爱看动漫的小梁
        @Rat's

        6、安装并运行云转码的npm install表示出错,大概意思是命令不存在,已经继续用ubuntu -16.04.5系统再进行安装!

        1. Rat's
          @爱看动漫的小梁

          你得观察报错命令,然后再解决掉错误,然后再安装。

  84. lin

    博主很厉害,有群么,加个群好友么

    1. Rat's
      @lin

      萌咖群看到过你。

  85. KINO

    哇 真的好棒!

  86. 屈阿零

    很详细,很受用。

    1. 仙侠
      @屈阿零

      大佬

    2. 我是博主
      @屈阿零

      作者大佬,您能推荐一款低价杜甫吗?

    3. Rat's
      @屈阿零

      这不是作者么。

      1. 刘超
        @Rat's

        老大能录制个视频教程吗,给钱的,这样最好了

      2. 刘超
        @Rat's

        centos6.8x64安装完也是502,5555555

        1. Rat's
          @刘超

          502正常,装完后需要先去后台,把所有设置提交一次就好了。

          1. 刘超
            @Rat's

            主要后台地址也是502

            1. Rat's
              @刘超

              检查下nginx和数据库状态是否正常运行。

              1. 曾厝垵
                @Rat's

                我也是502报错 能方便留个QQ吗 高价请求帮助

                1. Rat's
                  @曾厝垵

                  扣扣用的少,加我微信吧,微信rats54。