鱼C论坛

 找回密码
 立即注册
查看: 1133|回复: 3

[已解决]ffmpeg图片加文字时,告警是啥意思?

[复制链接]
发表于 2023-12-8 16:48:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 blackantt 于 2023-12-8 19:51 编辑

                                os.system('ffmpeg -i ./{}/{}_{}.png -vf "drawtext=fontfile=STSONG.TTF:fontcolor=white:fontsize=100:text="笃行天下":x=W-tw-100:y=H-th-100:shadowy=2" ./{}/sub_{}_{}.png'.format(mainfilename, mainfilename, timestamp1.group().replace(':', '_').replace(',', '_'), mainfilename, mainfilename, timestamp1.group().replace(':', '_').replace(',', '_')))

出告警:

[image2 @ 0000025d52f50400] The specified filename './2/sub_2_00_00_18_410.png' does not contain an image sequence pattern or a pattern is invalid.
[image2 @ 0000025d52f50400] Use a pattern such as %03d for an image sequence or use the -update option (with -frames:v 1 if needed) to write a single image.



加  -vframes 1 不行的话就加  -update true  就ok了
最佳答案
2023-12-8 19:52:06
blackantt 发表于 2023-12-08 19:51
加  -vframes 1 不行的话就加  -update true

非常抱歉,我之前的回答有误。正确的应该是使用`-vframes 1`选项来指定只处理一帧图像,而不是使用`-update`选项。下面是修改后的代码示例:
os.system('ffmpeg -i ./{}/{}_{}.png -vf "drawtext=fontfile=STSONG.TTF:fontcolor=white:fontsize=100:text=\'笃行天下\':x=W-tw-100:y=H-th-100:shadowy=2" -vframes 1 ./{}/sub_{}_{}.png'.format(mainfilename, mainfilename, timestamp1.group().replace(':', '_').replace(',', '_'), mainfilename, mainfilename, timestamp1.group().replace(':', '_').replace(',', '_')))
这样,`-vframes 1`选项会告诉ffmpeg只处理输入视频的第一帧图像,并输出加文字后的单个图像文件。

希望这次能够解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
python爱好者. + 5 + 3 鱼C有你更精彩^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-8 16:49:30 | 显示全部楼层
这个告警意思是指定的文件名"./2/sub_2_00_00_18_410.png"不包含一个图像序列模式,或者模式无效。建议你使用一个图像序列的模式,例如%03d,并且可以加上-update选项(如果需要,可以使用 -frames:v 1)来写入单个图像。

根据你的代码,你正在使用ffmpeg命令来给图片加上文字。在执行命令的时候,你传入了一个图像文件名,并使用该文件名生成了输出文件名。然而,根据报错信息来看,输入的文件名似乎是一个单个的图片文件,而不是一个图像序列。换句话说,你可能尝试给一张图片加上文字,但ffmpeg期望的是一个包含图片序列的文件名。

要解决这个问题,你可以尝试用一个图像序列的文件名作为输入,或者使用-update选项来表示只写入单个图片。例如,你可以将输入文件名改成"./2/sub_2_00_00_18_%03d.png",这样ffmpeg会自动识别到后面的数字序列,并逐帧处理;或者你可以加上-update选项,命令变成这样:os.system('ffmpeg -update 1 -i ./{}/{}_{}.png -vf "drawtext=fontfile=STSONG.TTF:fontcolor=white:fontsize=100:text="笃行天下":x=W-tw-100:y=H-th-100:shadowy=2" ./{}/sub_{}_{}.png'.format(mainfilename, mainfilename, timestamp1.group().replace(':', '_').replace(',', '_'), mainfilename, mainfilename, timestamp1.group().replace(':', '_').replace(',', '_')))。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-8 19:51:13 | 显示全部楼层
FishC 发表于 2023-12-8 16:49
这个告警意思是指定的文件名"./2/sub_2_00_00_18_410.png"不包含一个图像序列模式,或者模式无效。建议你使 ...

加  -vframes 1 不行的话就加  -update true
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-8 19:52:06 | 显示全部楼层    本楼为最佳答案   
blackantt 发表于 2023-12-08 19:51
加  -vframes 1 不行的话就加  -update true

非常抱歉,我之前的回答有误。正确的应该是使用`-vframes 1`选项来指定只处理一帧图像,而不是使用`-update`选项。下面是修改后的代码示例:
os.system('ffmpeg -i ./{}/{}_{}.png -vf "drawtext=fontfile=STSONG.TTF:fontcolor=white:fontsize=100:text=\'笃行天下\':x=W-tw-100:y=H-th-100:shadowy=2" -vframes 1 ./{}/sub_{}_{}.png'.format(mainfilename, mainfilename, timestamp1.group().replace(':', '_').replace(',', '_'), mainfilename, mainfilename, timestamp1.group().replace(':', '_').replace(',', '_')))
这样,`-vframes 1`选项会告诉ffmpeg只处理输入视频的第一帧图像,并输出加文字后的单个图像文件。

希望这次能够解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-8 11:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表