如何在 FFmpeg 创建的水印上应用自定义字体
How can I apply custom font on watermark that created by FFmpeg
我正在使用 FFmpeg 库制作视频。我想从 Android 资产文件夹访问字体并作为水印覆盖在我的视频上。
Android assets 文件夹在 FFmpeg 上访问和应用自定义字体的路径是什么?
我可以在视频上叠加水印,但是当我尝试在其上应用自定义字体时,它会给出与不存在等相关的错误。
到目前为止我发现了什么:
我找到的替代解决方案是创建一个图像文件并在其上写入文本,然后在视频上叠加图像。问题是文本和图像被拉伸输出。我需要一个解决方案。
String[] execute = {"-y", "-i", videoPath, "-i", image, "-filter_complex",
"[1:v]scale=" + width + ":" + height + "[ovrl],[0:v][ovrl]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2"
,"-strict" , "experimental", "-vcodec", "libx264" , "-preset", "ultrafast" , "-crf", "20", "-acodec", "aac", "-ar",
"44100", "-ac", "2", "-b:v", "36000k", outputPath.getPath()};
我认为 itz
输出会很好,但它拉伸了我的文本和图像。
我想要一些完美的解决方案来在 FFmpeg 上应用资产字体。
提前致谢。
Assets Directry 不能通过 FFMPEG 直接访问,你必须将其复制到内部存储中,然后你可以将 t 传递给 ffmpeg,否则 ffmpeg 槽错误 ffmpeg 是用于 vdeo 编辑的本机库,因此它可以获取资产数据
您可以使用 drawtext
属性在图像/视频上绘制文本。 Drawtext 有它自己的 fontstyle 参数这里是一个简单的示例代码如何使用自定义 fontstyel 和颜色
在 video/image 上绘制文本
ffmpeg -i input.mp4 -filter_complex "drawtext=text=Vinesh Chauhan:fontcolor=#000000:fontsize=14:x=43:y=103:fontfile=FACEBOLF.OTF" -y output.mp4
这里
text
=您想在 video/image
上绘制的文字
fontcolor
= 字体颜色
fontsize
= 文本的字体大小
x
和 y
用于在指定坐标上绘制文本
fontfile
=传给你fontsyle文件(TTF)文件路径
如果您希望在视频中添加图像作为水印,请不要缩放 tahat 图像,否则会改变图像的纵横比
使用下面的代码不改变图像的宽度高度
String[] execute = {"-y", "-i", videoPath, "-i", image, "-filter_complex",
"[1:v]scale=iw:-2[ovrl],[0:v][ovrl]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2"
,"-strict" , "experimental", "-vcodec", "libx264" , "-preset", "ultrafast" , "-crf", "20", "-acodec", "aac", "-ar",
"44100", "-ac", "2", "-b:v", "36000k", outputPath.getPath()};
或者您的应用具有自定义高度宽度功能,因此请使用以下代码来保持您的纵横比
String[] execute = {"-y", "-i", videoPath, "-i", image, "-filter_complex",
"[1:v]scale=" + width + ":-2[ovrl],[0:v][ovrl]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2"
,"-strict" , "experimental", "-vcodec", "libx264" , "-preset", "ultrafast" , "-crf", "20", "-acodec", "aac", "-ar",
"44100", "-ac", "2", "-b:v", "36000k", outputPath.getPath()};
我正在使用 FFmpeg 库制作视频。我想从 Android 资产文件夹访问字体并作为水印覆盖在我的视频上。
Android assets 文件夹在 FFmpeg 上访问和应用自定义字体的路径是什么? 我可以在视频上叠加水印,但是当我尝试在其上应用自定义字体时,它会给出与不存在等相关的错误。
到目前为止我发现了什么:
我找到的替代解决方案是创建一个图像文件并在其上写入文本,然后在视频上叠加图像。问题是文本和图像被拉伸输出。我需要一个解决方案。
String[] execute = {"-y", "-i", videoPath, "-i", image, "-filter_complex",
"[1:v]scale=" + width + ":" + height + "[ovrl],[0:v][ovrl]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2"
,"-strict" , "experimental", "-vcodec", "libx264" , "-preset", "ultrafast" , "-crf", "20", "-acodec", "aac", "-ar",
"44100", "-ac", "2", "-b:v", "36000k", outputPath.getPath()};
我认为 itz
输出会很好,但它拉伸了我的文本和图像。
我想要一些完美的解决方案来在 FFmpeg 上应用资产字体。
提前致谢。
Assets Directry 不能通过 FFMPEG 直接访问,你必须将其复制到内部存储中,然后你可以将 t 传递给 ffmpeg,否则 ffmpeg 槽错误 ffmpeg 是用于 vdeo 编辑的本机库,因此它可以获取资产数据
您可以使用 drawtext
属性在图像/视频上绘制文本。 Drawtext 有它自己的 fontstyle 参数这里是一个简单的示例代码如何使用自定义 fontstyel 和颜色
ffmpeg -i input.mp4 -filter_complex "drawtext=text=Vinesh Chauhan:fontcolor=#000000:fontsize=14:x=43:y=103:fontfile=FACEBOLF.OTF" -y output.mp4
这里
text
=您想在 video/image
fontcolor
= 字体颜色
fontsize
= 文本的字体大小
x
和 y
用于在指定坐标上绘制文本
fontfile
=传给你fontsyle文件(TTF)文件路径
如果您希望在视频中添加图像作为水印,请不要缩放 tahat 图像,否则会改变图像的纵横比
使用下面的代码不改变图像的宽度高度
String[] execute = {"-y", "-i", videoPath, "-i", image, "-filter_complex",
"[1:v]scale=iw:-2[ovrl],[0:v][ovrl]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2"
,"-strict" , "experimental", "-vcodec", "libx264" , "-preset", "ultrafast" , "-crf", "20", "-acodec", "aac", "-ar",
"44100", "-ac", "2", "-b:v", "36000k", outputPath.getPath()};
或者您的应用具有自定义高度宽度功能,因此请使用以下代码来保持您的纵横比
String[] execute = {"-y", "-i", videoPath, "-i", image, "-filter_complex",
"[1:v]scale=" + width + ":-2[ovrl],[0:v][ovrl]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2"
,"-strict" , "experimental", "-vcodec", "libx264" , "-preset", "ultrafast" , "-crf", "20", "-acodec", "aac", "-ar",
"44100", "-ac", "2", "-b:v", "36000k", outputPath.getPath()};