ffmpeg视频添加中文水印乱码

中文水印乱码,英文数字没问题,网上硕士编码的问题我转Utf8了好像也没用,字体系统是有的,换了字体也没用。中文的水印内容一直显示为一个正方形,类似乱码之类的东西。

ffmpeg.exe -i Z:\9a\test\v.mp4 -vf "drawtext=fontfile=simhei.ttf: text='hello您好' :x=10:y=(main_h-40):fontsize=22:fontcolor=black" Z:\9a\test\vv.mp4 -y

该回答引用ChatGPT-3.5,仅供参考,不保证完全正确

在使用FFmpeg添加中文水印时出现乱码问题可能是因为以下原因之一:

  1. 字体文件问题:确保您选择的字体文件支持中文字符。虽然您提到更改了字体文件,但请确认您使用的字体文件(simhei.ttf)是正确的,并且可以正常显示中文字符。

  2. 编码问题:确保您的视频文件和FFmpeg命令行中的文本都采用相同的字符编码格式。常用的字符编码格式是UTF-8,但您提到已经尝试过将编码转换为UTF-8并未解决问题。您可以使用文本编辑器(如Notepad++)将文本保存为UTF-8编码,然后再次尝试。

另外,您的命令行中存在一处错误。您需要将-vf参数与水印命令一起放在引号内,如下所示:

ffmpeg.exe -i Z:\9a\test\v.mp4 -vf "drawtext=fontfile=simhei.ttf:text='hello您好':x=10:y=(main_h-40):fontsize=22:fontcolor=black" Z:\9a\test\vv.mp4 -y

请注意,根据您系统中可用的字体,您可能需要更改fontfile参数的值为正确的字体文件路径。


该回答引用NewBing,仅供参考,不保证完全正确

根据我从网络上搜索到的信息,ffmpeg中文水印乱码可能有两种原因¹²³⁴⁵:

  1. 字符编码格式原因,中文必须是utf8编码格式的。您可以检查您的文字文件是否是utf8编码,或者在Linux上重新输入中文水印内容。
  2. 字体文件fontfile原因,您需要指定一个支持中文的字体文件,例如宋体、黑体等。您可以从Windows系统中拷贝字体文件到Linux系统中,并安装字体文件。

您可以参考以下链接中的详细步骤和示例来解决这个问题:

希望这些信息对您有所帮助。如果您还有其他问题,欢迎继续与我交流。😊

源: 与必应的对话, 2023/7/16
(1) FFmpeg加水印_weixin_33813128的博客-CSDN博客. https://blog.csdn.net/weixin_33813128/article/details/93402578.
(2) FFmpeg加水印 - GCat - 博客园. https://www.cnblogs.com/GhostCatcg/p/9299633.html.
(3) FFMPEG添加文字中文显示乱码的问题 - CSDN博客. https://blog.csdn.net/DeliaPu/article/details/76162489.
(4) 利用ffmpeg实现添加图片水印和文字水印,添加多个水印。代码和命令实现及中文水印乱码_这个冬天丶不太冷的博客-CSDN博客. https://blog.csdn.net/m0_37684310/article/details/78257779.
(5) FFmpeg加水印_Paul73500的博客-CSDN博客. https://blog.csdn.net/Paul73500/article/details/101160676.
(6) FFmpeg加水印 - GCat - 博客园. https://www.cnblogs.com/GhostCatcg/p/9299633.html.
(7) FFMPEG添加文字中文显示乱码的问题 - CSDN博客. https://blog.csdn.net/DeliaPu/article/details/76162489.
(8) 利用ffmpeg实现添加图片水印和文字水印,添加多个水印。代码和命令实现及中文水印乱码_这个冬天丶不太冷的博客-CSDN博客. https://blog.csdn.net/m0_37684310/article/details/78257779.
(9) FFmpeg加水印_Paul73500的博客-CSDN博客. https://blog.csdn.net/Paul73500/article/details/101160676.
(10) undefined. https://ffmpeg.org/ffmpeg-filters.html#overlay-1.
(11) undefined. https://ffmpeg.org/ffmpeg-filters.html#drawtext-1.
(12) undefined. http://blog.csdn.net/leixiaohua1020/article/details/29368911.
(13) undefined. https://ffmpeg.org/ffmpeg-filters.html.

采用chatgpt:
您遇到的问题可能是由于字体的编码不匹配导致的。请尝试按照以下步骤解决中文水印乱码的问题:

1、确保您使用的字体文件(simhei.ttf)是正确的中文字体文件,可以在其他应用程序中正确显示中文。
2、确保将字体文件放置在正确的位置,或者使用完整的字体文件路径。
3、使用正确的字体编码来处理中文字符。UTF-8 是一种广泛使用的中文编码方式,但并不是所有字体文件都支持。您可以尝试使用其他中文编码方式,如 GB2312 或 GBK。
4、使用 fontcolor=black 参数指定字体的颜色,确保水印文字不会显示为透明或与背景颜色相同。
5、如果上述步骤都没有解决问题,您可以尝试使用其他中文字体文件,确保它们能够正确显示中文字符。
下面是修改后的命令示例:

ffmpeg.exe -i Z:\9a\test\v.mp4 -vf "drawtext=fontfile=simhei.ttf: text='hello您好' :x=10:y=(main_h-40):fontsize=22:fontcolor=black: encoding=gbk" Z:\9a\test\vv.mp4 -y

在这个示例中,我们添加了 : encoding=gbk 参数来指定使用 GBK 编码方式处理中文字符。