我正在尝试使用绘画文字应用标题,该标题应在视频结束前一秒消失:
with open(text_file_list, "r") as ins:
array = []
for line in ins:
array.append(line)
print(line)
m = re.search(r"(?<=tinted_combined).*?(?=.jpg::1)", your_text).group(0)
if m:
found = m.group(1)
print(found)
问题是我事先不知道视频长度。我试过使用'between(t,0,-1)',但是它不起作用,标题从不显示。 有人知道有没有办法不必先打开视频来检查长度,而仅在绘制字幕后才这样做? 预先感谢!
答案 0 :(得分:0)
FFmpeg不会将流持续时间传达给过滤器,因此必须以回旋方式完成。
FFmpeg具有sseof函数,可以从文件末尾查找。它还有一个copyts选项来维护时间戳。因此,我们将输入加载两次,一次是完整输入,另一次是最后一秒。然后,我们在整个第一个输入上绘制文本,但覆盖第二个输入的最后一个第二个文本,由于保留了时间戳,该文本将被适当地刻录。
ffmpeg -copyts -i input.mp4 -sseof -1 -i input.mp4 -filter_complex "[0]drawtext=fontfile=font.ttf:text='Some caption':x=60:y=640:fontsize=40:fontcolor=#f0f0f0@0.9[txt];[txt][1]overlay" -vcodec libx264 -crf 27 -preset ultrafast -acodec copy output.mp4