这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

转码及CMS问题解决

上传问题,转码错误等问题,字幕烧录问题,水印和跑马灯等问题,M3U8播放等问题,及其它转码和CMS问题解决。

1 - 上传视频卡进度条或出错

在上传期间卡进度条,不能断点续传,大文件上传失败,加了CDN上传失败,上传100%后失败等问题。

对于出现上传问题的,如果是使用域名访问的后台,建议直接使用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,重新转码即可。

不会查看编码的,这里举个例子,比如我的字幕路径为/home/express-ffmpeg/movies/xx.ass,则我在ssh客户端运行命令:

file -i '/home/express-ffmpeg/movies/xx.ass'

会输出一串信息,如charset=utf-8,后面就是该字幕文件编码,这里提供一个批量转换字幕到utf-8shell脚本。

#!/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开关,使用CPUGPU没适配去水印/跑马灯功能。

视频不转码了

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后,可能会因为配置或视频问题,出现播放失败、画面抖动或快进卡住等问题。

M3U8播放失败

引起M3U8播放问题的因素有很多种,这里会分开说明,且转码设置的是否切片开关必须打开,不然不会切片。

注意M3U8的域名必须开启SSL证书,并强制https访问,以防因为安全问题,在某些设备被阻止播放。

自适应M3U8播放不了

自适应M3U8播放需要转码设置的设置域名填写正确,不然会播放不了,可前往转码设置检查下设置域名是否正确,自适应介绍 ⇒ 传送门

开启切片广告后播放不了

如果开启切片广告后播放不了,但关掉后可以播放,则可以确定为该问题。

目前已知问题就是广告视频和转码后的视频在分辨率上相差太大,导致兼容性出现问题,可以换个分辨率相差不大的广告视频试试。

开启图片伪装后播放不了

如果EFV后台的预览地址播放不了,则可能是缓存,一般出现在视频很长中,导致处理慢了点,这时候要么等待片刻,要么在视频管理直接点清除缓存即可。

如果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

我们在转码过程中,可能会因为设置等问题,导致预览视频没有生成,或保留MP4功能不起作用。

未生成预览视频

我们在转码设置开启是否生成预览视频后,并没有生成预览视频,常见的大概有以下2种情况。

自定义预览视频宽度/高度设置错误

可前往转码设置检查自定义预览视频宽度自定义预览视频高度设置,必须为偶数才会生成预览视频。

视频时长过短

时长过短的视频,如几秒、几十秒短视频,切的太快,可能还未生成预览视频就把源视频给删了。

可前往转码设置开启是否保留源片,切完后,自行前往服务器删除源视频,入库文件夹movies、后台上传文件夹upload,下载中心文件夹download

保留MP4无效

如果我们通过复制M3U8入口访问MP4链接出现404,则可能分以下2种情况。

转码模式

如果你是转码模式,则在转码设置的保留MP4分辨率不是多码率选择的分辨率,一般转码只会转码多码率的分辨率,所以你只能保留多码率选择的分辨率视频。

修正设置后需要重新转码才会给你保留MP4

秒切模式

如果你是秒切模式,则在转码设置的保留MP4分辨率必须和秒切挂靠分辨率一样,秒切的话,只要你保留MP4有选择,则必会给你保留,且命名默认以秒切挂靠分辨率设置为准,而复制M3U8入口的MP4链接是以保留MP4分辨率为准,所以两个设置需要一样,才能对的上,以致于可以正常访问MP4链接。

修正设置后,如果你保留MP4之前有设置,只是和秒切挂靠分辨率不一样,则改成一样后不需要重新切片就可以看到正确的MP4链接。