问题描述
我正在使用以下命令在视频文件上添加文本水印(对于 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
设置良好的视频比特率(例如: 2500
、3500
或 4000
)。
试试:
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