当前位置:   article > 正文

python怎么加字幕_使用moviepy为电影添加字幕

python怎么加字幕_使用moviepy为电影添加字幕

我尝试遵循this example如何向电影剪辑添加字幕:from moviepy.video.tools.subtitles import SubtitlesClip

from moviepy.video.io.VideoFileClip import VideoFileClip

subs = [((0, 3), 'sub1'),

((3, 7), 'sub2'),

((9, 11), 'sub3'),

((11, 16), 'sub4')]

subtitles = SubtitlesClip(subs)

clip = VideoFileClip(video_fname)

video = movedit.CompositeVideoClip([clip, subtitles])

video.to_videofile(output_video_name)

但是输出的电影没有字幕。我做错什么了吗?

顺便说一句,subtitles.py不适用于python3,这行代码

^{pr2}$

需要更改为subtitles = [(list(map(cvsecs, tt),txt)) for tt, txt in subtitles]

编辑

最终,我用很难的方式制作了字幕:from moviepy import editor

import os.path as op

def annotate(clip, txt, txt_color='red', fontsize=50, font='Xolonium-Bold'):

""" Writes a text at the bottom of the clip. """

txtclip = editor.TextClip(txt, fontsize=fontsize, font=font, color=txt_color)

cvc = editor.CompositeVideoClip([clip, txtclip.set_pos(('center', 'bottom'))])

return cvc.set_duration(clip.duration)

video = editor.VideoFileClip(op.join(movie_fol, movie_name))

subs = [((0, 4), 'subs1'),

((4, 9), 'subs2'),

((9, 12), 'subs3'),

((12, 16), 'subs4')]

annotated_clips = [annotate(video.subclip(from_t, to_t), txt) for (from_t, to_t), txt in subs]

final_clip = editor.concatenate_videoclips(annotated_clips)

final_clip.write_videofile(op.join(movie_fol, out_movie_name))

它并不完美,还有改进的空间,比如支持没有字幕的时间范围,但它解决了我的问题。在

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/80408
推荐阅读
相关标签
  

闽ICP备14008679号