You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

FFmpeg drawtext滤镜导致文件过大、CPU过高及画质损失问题求助

解决FFmpeg绘制文本时的画质、体积与CPU占用问题

嘿,作为FFmpeg新手碰到这些问题真的太常见了,我来帮你逐个击破:

1. 搞定画质损失+体积过大的问题

你已经尝试了-c:v libx264 -crf 20,但可能没考虑原视频的编码特性——ASF格式通常内置WMV编码,想要贴近原文件的体积和画质,可以试试这两个方案:

方案A:匹配原视频的编码参数

先查清楚原视频的核心参数,用这条命令:

ffmpeg -i input1.asf

从输出里找到视频流的编码格式(比如wmv2)、码率(比如500k)。然后在命令里复用这些参数,比如:

ffmpeg -i input1.asf -vf drawtext="fontfile=/path/to/font.ttf:text='Stack Overflow':fontcolor=white:fontsize=24:box=1:boxcolor=black@0.5:boxborderw=5:x=10:y=10" -c:v wmv2 -b:v 500k -codec:a copy IndVsNZ.asf

这样编码出来的视频会和原文件的体积、画质更接近,因为用了相同的编码标准和码率。

方案B:优化H.264编码参数(如果偏好H.264格式)

如果还是想用libx264,调整CRF值和预设来平衡画质、体积和速度:

  • CRF值越小画质越好但体积越大,18-23是肉眼几乎无损失的范围,你可以试试-crf 22,在保证画质的同时稍微压缩体积;
  • 加上-preset fast参数,比默认的medium编码速度更快,CPU占用更低,体积只会略有增加。
    命令示例:
ffmpeg -i input1.asf -vf drawtext="fontfile=/path/to/font.ttf:text='Stack Overflow':fontcolor=white:fontsize=24:box=1:boxcolor=black@0.5:boxborderw=5:x=10:y=10" -c:v libx264 -crf 22 -preset fast -codec:a copy IndVsNZ.mp4

(建议把输出格式改成MP4,H.264在MP4容器里的兼容性更好,ASF不是H.264的常用容器)

2. 解决CPU占用过高、系统卡顿的问题

CPU飙高主要是因为视频滤镜处理+软件编码的计算量太大,最有效的解决方法是用硬件加速编码

NVIDIA显卡用户

换成h264_nvenc编码器,让GPU来承担编码工作,CPU占用会大幅下降,速度也快很多:

ffmpeg -i input1.asf -vf drawtext="fontfile=/path/to/font.ttf:text='Stack Overflow':fontcolor=white:fontsize=24:box=1:boxcolor=black@0.5:boxborderw=5:x=10:y=10" -c:v h264_nvenc -crf 22 -preset fast -codec:a copy IndVsNZ.mp4

Intel核显用户

换成h264_qsv编码器,利用Intel核显的硬件加速能力:

ffmpeg -i input1.asf -vf drawtext="fontfile=/path/to/font.ttf:text='Stack Overflow':fontcolor=white:fontsize=24:box=1:boxcolor=black@0.5:boxborderw=5:x=10:y=10" -c:v h264_qsv -crf 22 -preset fast -codec:a copy IndVsNZ.mp4

无硬件加速的临时方案

如果硬件加速不可用,选择最快的软件编码预设-preset ultrafast,虽然体积会稍大,但CPU占用会明显降低,能避免系统卡顿:

ffmpeg -i input1.asf -vf drawtext="fontfile=/path/to/font.ttf:text='Stack Overflow':fontcolor=white:fontsize=24:box=1:boxcolor=black@0.5:boxborderw=5:x=10:y=10" -c:v libx264 -crf 22 -preset ultrafast -codec:a copy IndVsNZ.mp4

总结建议

优先尝试硬件加速编码+匹配原视频参数/优化H.264参数的组合,这样既能保证画质、控制体积,又能大幅降低CPU占用。如果还有问题,可以再仔细核对原视频的编码信息,确保参数设置准确。

内容的提问来源于stack exchange,提问作者theburningfire

火山引擎 最新活动