转码及CMS问题解决
- 1: 上传视频卡进度条或出错
- 2: 转码卡状态或出现错误
- 3: 扫描入库无效或缺视频
- 4: M3U8播放失败等问题
- 5: 未生成预览视频或MP4
1 - 上传视频卡进度条或出错
对于出现上传问题的,如果是使用域名访问的后台,建议直接使用ip:3000
访问后台上传相同的视频,如果可行,先排除程序本身的问题。
上传卡进度条或不能断点续传
宝塔有些Nginx
版本配置反向代理的时候,如果缺少断点续传代码会出现进度条一直循环抽风,导致上传不了视频。
可以通过宝塔面板,找到配置的域名,进入域名设置,找到反向代理 ⇒ 编辑反向代理配置,调整如下:
#添加上传断点续传代码
proxy_cache_convert_head off;
proxy_request_buffering off;
#EFV的nginx完整反向代理代码
location /
{
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_cache_convert_head off;
proxy_request_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
}
大文件上传失败
也就是低于50M
视频可以上传,高于50M
上传会失败;大致问题就是Nginx
上传限制没有修改。
如果是宝塔安装的Nginx
,可点击宝塔面板的软件商店,找到Nginx
,点击右侧设置按钮,找到性能调整,修改client_max_body_size
参数值。
上传100%后失败
目前常见于宝塔面板的Nginx
防火墙引起该问题,可在宝塔Nginx
防火墙设置URL
白名单,然后添加URL
地址的时候填/api/uploads/*
。
加了CDN上传失败
一般CDN
会控制上传大小,推荐直接使用ip:3000
访问后台上传视频。
其它上传问题
如果上述错误并不在你出现的范围内,建议在电脑上使用谷歌浏览器打开上传页面,按下f12
,点击控制台后再上传,可以查看上传信息,如下:
一般上传错误,控制台会出现红色报错,有点基础的可以自行谷歌解决,或者将红色错误信息发给我们,可更快的协助你解决该问题。
2 - 转码卡状态或出现错误
以下主要列举一下视频状态的一些问题说明及解决方法,如果根据下述方法解决依然出错,可在视频管理,查看出错视频的转码日志,会告诉你哪一个环节出错和报错提示,要是看不出来,可将日志发给我们,协助解决问题。
视频错误
1、视频有问题,大多数为采集视频出现,这种视频一般播放也会有问题,可以使用一个非采集视频测试下转码,正常视频 ⇒ 点击下载。
2、视频上传后,开始转码的时候,你把源片给删掉了。
3、服务器缺少ffmpeg
,一般发生在迁移服务器后,可在服务器运行ffmpeg
命令查看,提示-bash: ffmpeg: command not found
,则未安装,可使用命令:
#下载二进制文件
wget https://file.zhuanma.co/ffmpeg-git-amd64-static.tar.gz
#解压文件
tar zxvf ffmpeg-git-amd64-static.tar.gz && rm -rf ffmpeg-git-amd64-static.tar.gz
#移动文件
mv ffmpeg-git-amd64-static/ffmpeg ffmpeg-git-amd64-static/ffprobe /usr/bin/
#查看版本,有版本输出则安装成功
ffmpeg
ffprobe
4、如果上面3
种问题都没出现,也可能是pm2
启动进程异常,可依次运行以下命令:
#关闭EFV进程
pm2 del efvcms
#进入EFV源码目录 如不在/home的请自行修改路径后再运行命令
cd /home/express-ffmpeg
#重新启动
PORT=3000 NODE_ENV=production pm2 start bin/www --name efv
#保存会话,即开机自启
pm2 save
秒切失败
大概率视频有问题,大多数为采集视频出现,这种视频一般播放也会有问题,可以使用一个非采集视频测试下转码,正常视频 ⇒ 点击下载。
转码错误
转码错误主要是因为一些使用操作问题而导致,比如加水印/跑马灯,去水印跑马灯,烧录字幕等,这里会分开挨个说明,
且如果有修改过转码设置里的码率设置
,可检查下格式有没有改动,或者部分分辨率有没有删除。
使用加跑马灯和水印功能
一般为跑马灯或部分水印所需要的时间未设置,或者提交前未保存,导致设置失败,可直接在水印/跑马灯设置
页面查看相关设置选项,如有参数有显示未设置
,则重新设置即可。
使用去水印和跑马灯功能
1、给视频选择批量去水印/跑马灯模板的时候,选错了模板。
2、给视频设置批量去水印/跑马灯模板的时候,画的框框有瑕疵,没有完全把跑马灯和水印框住。
使用烧录ass和srt字幕功能
提示:最新版会自动将非UTF-8编码的字幕文件转换到UTF-8,无需手动修改,可手动更新到最新版。
可能是字幕文件非utf-8
编码造成的,将编码改成utf-8
,重新转码即可。
不会查看编码的,这里举个例子,比如我的字幕路径为/home/express-ffmpeg/movies/xx.ass
,则我在ssh
客户端运行命令:
file -i '/home/express-ffmpeg/movies/xx.ass'
会输出一串信息,如charset=utf-8
,后面就是该字幕文件编码,这里提供一个批量转换字幕到utf-8
的shell
脚本。
#!/bin/bash
# 设置要扫描的文件夹路径
folder="movies"
# 查找所有.srt和.ass文件
files=$(find "$folder" -type f \( -name "*.srt" -o -name "*.ass" \))
# 循环处理每个字幕文件
for file in $files; do
# 获取文件编码
encoding=$(file -bi "$file" | awk -F "=" '{print \$2}')
# 检查编码是否为UTF-8
if [[ $encoding != "utf-8" ]]; then
# 转换非UTF-8编码的文件为UTF-8编码
iconv -f $encoding -t UTF-8 "$file" -o "${file%.srt}_utf8.srt"
# 替换原始文件
mv "${file%.srt}_utf8.srt" "$file"
echo "文件 $file 被转换为UTF-8编码"
else
echo "文件 $file 已经是UTF-8编码,无需转换"
fi
done
echo "字幕文件转换完成"
在服务器root
目录新建ass.sh
文件,将上面内容复制进去,修改扫描的文件夹路径,保存后使用bash ass.sh
运行即可。
使用GPU转码功能
1、服务器没有Nvidia
显卡。
2、服务器上显卡驱动没跑起来,使用nvidia-smi
命令查看,如果没显卡信息出现,那就是该原因,如果跑起来了可能是驱动需要更新,可联系我们。
3、如果你选择了去水印/跑马灯,请暂时关掉GPU
开关,使用CPU
,GPU
没适配去水印/跑马灯功能。
视频不转码了
1、看看最近是否在不同服务器上安装过、是否迁移过服务器、服务器是否换过ip
,如果有,则大概多ip
同时运行异常了,请联系我们处理。
2、DNS
问题,你在ssh
客户端输入ping baidu.com
命令,如果返回Name or service not known
则为DNS
问题,解决方法 ⇒ 点击查看。
视频卡转码中状态
1、视频有问题,比如加密视频,或者你把图片或者其他非视频文件上传转码,导致转码卡住,解决办法就是删掉该文件即可。
2、视频太短,比如低于10s
,截图时间不够,建议前往转码设置,开启保留原片,后面手动删除原片。
3、转码设置的自定义切片路径
你没加分辨率,也就是{random}
和{hd}
仅能存在一个且必须存在一个
特别说明
如果你看了上面这些问题和解决办法,问题依旧没有得到解决,可直接联系我们,且为了方便快速处理问题,建议提供该视频转码日志信息,日志查看方式:
3 - 扫描入库无效或缺视频
如果我们在扫描入库后,视频管理处没有/缺少视频,则一般存在如下问题:
1、入库文件夹的视频与视频管理处的视频在名称上重复,导致入库失败。
2、检查下转码设置的入库后缀选项;看看要入库的视频在不在后缀范围内。
3、上传视频的编码不对,多常见为GBK,需转换为UTF-8。
关于编码查看问题,先使用SSH
客户端登录服务器:
#进入到入库文件夹,比如我的安装路径/home/express-ffmpeg
cd /home/express-ffmpeg/movies
#查看需要入库的视频文件名称
ls
如果文件夹名称都是乱码,则基本可以确定为编码问题,再使用命令转换编码。
先安装convmv
,使用命令:
#CentOS 7+、AlmaLinux、Rocky Linux系统
yum install -y convmv
#Debian、Ubuntu系统
apt install -y convmv
再使用命令:
#在入库文件夹运行即可,比如/home/express-ffmpeg/movies,先进入该文件夹
cd /home/express-ffmpeg/movies
#转换为UTF-8
convmv -f GBK -t UTF-8 -r --notest *
不出意外,现在再查看文件不乱码了,此时就可以入库了。
4 - M3U8播放失败等问题
引起播放失败的原因有很多种,请先把这个文档页面看完了,再根据自身情况进行查找和修复问题。
播放失败的常见问题
如果出现M3U8
播放失败的问题,推荐在pc
上使用谷歌浏览器打开播放页面,按下f12
,点击播放的时候查看控制台,常见问题如图:
这种需要给EFV
绑定的域名开启SSL
,强制https
访问,然后在其它网站填写M3U8
链接的时候,也用https
,如果是采集的话,那么将转码设置的域名设置,修改成https
即可。
这种就是跨域问题,一般如果你没有在防盗链/图片加密设置
设置引用域名
,默认是不会跨域的;当然你要是设置了,且播放域名在引用域名
列表,也是不会跨域的。如果引用域名都正常,且你是使用nginx
绑定EFV
,则可以更换nginx
版本试试,或者直接卸载nginx
,使用EFV
自带的网站管理,可解决该问题。
自适应M3U8播放不了
自适应M3U8
播放需要转码设置的设置域名
填写正确,不然会播放不了,可前往转码设置检查下设置域名是否正确,自适应介绍 ⇒ 传送门。
开启切片广告后播放不了
如果开启切片广告后播放不了,但关掉后可以播放,则可以确定为该问题。
目前已知问题就是广告视频和转码后的视频在分辨率上相差太大,导致兼容性出现问题,可以换个分辨率相差不大的广告视频试试。
开启图片伪装后播放不了
如果EFV
后台的预览地址可以播放,但只是你的第三方程序播放不了,可能就是你那边用的播放器hls.min.js
或者hls.js
版本过旧,更新下该文件即可,推荐版本:
#可用版本
https://cdn.bootcdn.net/ajax/libs/hls.js/0.14.1/hls.min.js
https://cdn.bootcdn.net/ajax/libs/hls.js/0.14.1/hls.js
开启防盗链后播放不了
有些防盗链需要自己亲自对接后才能正常播放,相关防盗链介绍及使用 ⇒ 传送门。
APP或IOS不能播放
1、如果在防盗链/图片加密设置
中开启了TS
防下载合并功能,试试关闭看看。
2、切片域名未开启SSL
证书,必须开启,并使用https
域名,如果已开启,可能是域名ssl
证书链有问题,域名证书检测 ⇒ 传送门,如果检测超时,或提示证书链等问题,则为该问题,可以自己补全下证书链,或重新签发证书。
其它播放问题
M3U8播放卡住或快进卡住
1、如果是秒切的M3U8
,则可能是源片有问题,关掉秒切,直接转码矫正下试试,如果转码后不出现,则源片有点问题,直接使用转码即可。
2、排除上面的问题后,则可能是网络不好或者并发太高。
m3u8播放出现画面抖动
1、如果是秒切的M3U8
,则可能是源片有问题,关掉秒切,直接转码矫正下试试,如果转码后不出现,则源片有点问题,直接使用转码即可。
2、如果秒切和转码都出现抖动,可以试试换片源,如果换了还是出现,可能是服务器硬件有瑕疵,可以去我们的演示站测试,确定可以更换服务器。
5 - 未生成预览视频或MP4
未生成预览视频
我们在转码设置
开启是否生成预览视频
后,并没有生成预览视频,常见的大概有以下2
种情况。
自定义预览视频宽度/高度设置错误
可前往转码设置
检查自定义预览视频宽度
和自定义预览视频高度
设置,必须为偶数才会生成预览视频。
视频时长过短
时长过短的视频,如几秒、几十秒短视频,切的太快,可能还未生成预览视频就把源视频给删了。
可前往转码设置
开启是否保留源片
,切完后,自行前往服务器删除源视频,入库文件夹movies
、后台上传文件夹upload
,下载中心文件夹download
。
保留MP4无效
如果我们通过复制M3U8
入口访问MP4
链接出现404
,则可能分以下2
种情况。
转码模式
如果你是转码模式,则在转码设置
的保留MP4
分辨率不是多码率选择的分辨率,一般转码只会转码多码率的分辨率,所以你只能保留多码率选择的分辨率视频。
修正设置后需要重新转码才会给你保留MP4
。
秒切模式
如果你是秒切模式,则在转码设置
的保留MP4
分辨率必须和秒切挂靠分辨率一样,秒切的话,只要你保留MP4
有选择,则必会给你保留,且命名默认以秒切挂靠分辨率设置为准,而复制M3U8
入口的MP4
链接是以保留MP4
分辨率为准,所以两个设置需要一样,才能对的上,以致于可以正常访问MP4
链接。
修正设置后,如果你保留MP4
之前有设置,只是和秒切挂靠分辨率不一样,则改成一样后不需要重新切片就可以看到正确的MP4
链接。