Merge pull request #64 from fkusei/master

fix make-ffmpeg-fade
This commit is contained in:
Sophie Schiller 2024-04-04 08:30:06 +02:00 committed by GitHub
commit 1893beda4d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,6 +5,7 @@ import os
import sys import sys
import subprocess import subprocess
import renderlib import renderlib
import schedulelib
import argparse import argparse
import shlex import shlex
from PIL import ImageFont from PIL import ImageFont
@ -173,21 +174,28 @@ def run(command, **kwargs):
def fit_text(string: str, frame_width): def fit_text(string: str, frame_width):
split_line = [x.strip() for x in string.split()] split_line = [x.strip() for x in string.split()]
lines = "" lines = []
w = 0 w = 0
line_num = 0 line_num = 0
line = "" line = []
for word in split_line: for word in split_line:
w, _ = translation_font.getsize(" ".join([line, word])) new_line = line + [word.rstrip(':')]
print("{}, {}".format(w, line)) w, _ = translation_font.getsize(" ".join(new_line))
if w > (frame_width): print(w, new_line)
print("too wide, breaking") if w > frame_width:
lines += line.strip() + "\n" print("too wide, breaking", line)
line = "" lines.append(' '.join(line))
line = []
line += word + " " line.append(word.rstrip(':'))
lines += line.strip() if word.endswith(':'):
print(':, breaking', line)
lines.append(' '.join(line))
line = []
if line:
lines.append(' '.join(line))
return lines return lines
@ -232,48 +240,38 @@ def enqueue_job(event):
outfile = os.path.join(os.path.dirname(args.project), event_id + '.ts') outfile = os.path.join(os.path.dirname(args.project), event_id + '.ts')
videofilter = "drawtext=fontfile={fontfile}:fontsize={fontsize}:fontcolor={fontcolor}:x={x}:y={y}:text='{text}':".format( videofilter = ""
fontfile=font_t, for idx, line in enumerate(t):
fontsize=title_fontsize, videofilter += "drawtext=fontfile={fontfile}:fontsize={fontsize}:fontcolor={fontcolor}:x={x}:y={y}:text='{text}':".format(
fontcolor=title_fontcolor, fontfile=font_t,
x=title_x, fontsize=title_fontsize,
y=title_y, fontcolor=title_fontcolor,
text=t) x=title_x,
videofilter += "alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))',".format( y=title_y + (idx * title_fontsize),
fade_in_start_time=title_in, text=line)
fade_in_end_time=title_in + fade_duration, videofilter += "alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))',".format(
fade_out_start_time=title_in + fade_duration + title_duration, fade_in_start_time=title_in,
fade_out_end_time=title_in + fade_duration + title_duration + fade_duration, fade_in_end_time=title_in + fade_duration,
fade_duration=fade_duration fade_out_start_time=title_in + fade_duration + title_duration,
) fade_out_end_time=title_in + fade_duration + title_duration + fade_duration,
videofilter += "drawtext=fontfile={fontfile}:fontsize={fontsize}:fontcolor={fontcolor}:x={x}:y={y}:text='{text}':".format( fade_duration=fade_duration
fontfile=font_s, )
fontsize=speaker_fontsize,
fontcolor=speaker_fontcolor, for idx, line in enumerate(s):
x=speaker_x, videofilter += "drawtext=fontfile={fontfile}:fontsize={fontsize}:fontcolor={fontcolor}:x={x}:y={y}:text='{text}':".format(
y=speaker_y, fontfile=font_s,
text=s) fontsize=speaker_fontsize,
videofilter += "alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))',".format( fontcolor=speaker_fontcolor,
fade_in_start_time=speaker_in, x=speaker_x,
fade_in_end_time=speaker_in + fade_duration, y=speaker_y + (idx * speaker_fontsize),
fade_out_start_time=speaker_in + fade_duration + speaker_duration, text=line)
fade_out_end_time=speaker_in + fade_duration + speaker_duration + fade_duration, videofilter += "alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))',".format(
fade_duration=fade_duration fade_in_start_time=speaker_in,
) fade_in_end_time=speaker_in + fade_duration,
videofilter += "drawtext=fontfile={fontfile}:fontsize={fontsize}:fontcolor={fontcolor}:x={x}:y={y}:text={text}:".format( fade_out_start_time=speaker_in + fade_duration + speaker_duration,
fontfile=font_tt, fade_out_end_time=speaker_in + fade_duration + speaker_duration + fade_duration,
fontsize=text_fontsize, fade_duration=fade_duration
fontcolor=text_fontcolor, )
x=text_x,
y=text_y,
text=text_text)
videofilter += "alpha='if(lt(t,{fade_in_start_time}),0,if(lt(t,{fade_in_end_time}),(t-{fade_in_start_time})/{fade_duration},if(lt(t,{fade_out_start_time}),1,if(lt(t,{fade_out_end_time}),({fade_duration}-(t-{fade_out_start_time}))/{fade_duration},0))))'".format(
fade_in_start_time=text_in,
fade_in_end_time=text_in + fade_duration,
fade_out_start_time=text_in + fade_duration + text_duration,
fade_out_end_time=text_in + fade_duration + text_duration + fade_duration,
fade_duration=fade_duration
)
if fileformat == '.mov': if fileformat == '.mov':
if alpha == 'true': if alpha == 'true':