gpt4 book ai didi

video - Ffmpeg drawtext过滤器创建大输出文件并占用高cpu?

转载 作者:行者123 更新时间:2023-12-04 23:07:59 25 4
gpt4 key购买 nike

我有一个视频输入文件,我在其上绘制用户提供的文本。我可以使用 ffmpeg 的 drawtext 过滤器在视频文件上绘制文本并且它可以工作文件,但主要问题出现在 ffmpeg 命令上。

那就是当我运行我的 ffmpeg 命令时,会发生三件事:-
1.输出视频文件大小大于输入文件大小。
2.输出视频文件比输入视频文件失去视频质量。
3. cpu 非常高。

正在使用的 ffmpeg 命令是-

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" -codec:a copy IndVsNZ.asf

为了避免视频质量下降,我使用了这个参数“-c:v libx264 -crf 20”。

我想要实现的是我可以在我的视频文件上绘制文本而不会损失质量,与输入文件相同的输出文件大小和低 cpu(因为它挂起我的系统)。

我在互联网上尝试了各种解决方案,但找不到问题。如果有任何与此相关的链接,请分享。我是ffmpeg的新手。

谢谢!

最佳答案

您正在比较不同的格式、不同的编码器实现以及处理生成损失。

The output video file size is larger then input file size.
The output video file loses quality of video than input video file.



您的输入视频流可能是现代、高效的格式,例如 H.264。但是,.asf 输出的默认编码器使用 ffmpeg是 msmpeg4v3,它输出视频格式 MPEG-4 第 2 部分 Microsoft 变体版本 3。这是一个旧的、相对低效的编码器,具有蹩脚的默认设置。由于它的效率较低,因此相同质量需要更多位。这就是为什么添加 -c:v libx264 -crf 20提高每比特质量,因为这可以实现更好的编码器和更现代的格式 (H.264)。

您还在重新编码有损输入中存在的压缩伪影,这可能会进一步损害可压缩性。这称为 generation loss .

如果您想要 H.264 视频,那么您可以做的是调整 CRF 值。给它提供可接受质量的最高值。尝试从 18 到 26 左右的范围。使用最慢的 -preset你有耐心。见 FFmpeg Wiki: H.264了解更多信息。

The cpu is going very high.



这是可以预料的。视频编码的计算成本很高。您可以使用 -threads 减少编码线程的数量。选项和/或使用单独的工具来限制 CPU 使用率,例如 nice在 Linux 上。但这会使编码花费更长的时间。

关于video - Ffmpeg drawtext过滤器创建大输出文件并占用高cpu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56952469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com