在不损失音频和视频质量的情况下在视频上添加文字水印

问题描述

我正在使用以下命令在视频文件添加文本水印(对于 mp4、mpg、m4v、flv、mov 等):

ffmpeg -i input.mp4 -vf "drawtext=text='Opentext':x=(w-text_w)/2:y=(h-text_h)/2:fontsize=24:fontcolor=white" textoutput.mp4

对于某些文件转换,视频文件属性会发生变化。例如 - 当我尝试在 mkv 文件添加文本水印时,我收到了这条消息:

[matroska @ 0000001867d36ec0] 输出流 0:1 中的非单调 DTS; 上一个:2273,当前:1596;更改为 2273。这可能会导致 输出文件中的时间戳不正确。

这是我在这里提到的问题之一。还有其他的,例如:

  • 视频质量下降
  • 视频文件大小发生变化(急剧增加/减少)
  • 发生音频滞后等...

所以,我想在添加文字水印后保留视频的质量。我该怎么做?

解决方法

使用 -crf(恒定速率因子)来提高图片质量。
数字越小质量越高(在可能的情况下),但编码时间较慢。测试一个好的数字。

还可以使用 b:v 设置良好的视频比特率(例如: 250035004000)。

试试:

ffmpeg -i input.mp4 -vf "drawtext=text='Opentext':x=(w-text_w)/2:y=(h-text_h)/2:fontsize=24:fontcolor=white" -c:v libx264 -pix_fmt yuv420p -crf 20 -c:a copy TextOutput.mp4

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...