moviepy给视频添加字幕很慢的问题解决

前面说了如何通过moviepy给视频添加字幕:

https://blog.csdn.net/qq_30594137/article/details/140094118?spm=1001.2014.3001.5502

但是真实添加字幕的时候,就会很耗时,这是因为如下问题导致的。
在这里插入图片描述

CompositeVideoClip的入参是个list,可以给video和text的clip合并,上图是一个字母合并一次,完全可以所有字母和视频合并一次,如下写法:

def add_subtitle(video_config, video_path, out_path):
    # 加载视频文件
    video = VideoFileClip(video_path)
    fps = video.fps
    all_time = 0
    clips = [video]
    for config in video_config:
        subtitle = config.get('subtitle')
        time = config.get('time')
        fontsize = int(video.h/20)
        # 添加文字
        text = TextClip(subtitle, fontsize=fontsize, font=f"{PROJECT_PATH}/src/font/STXINGKA.TTF", bg_color='white', color='black')
        # text = TextClip(subtitle, fontsize=20, font=f"{PROJECT_PATH}/src/font/STXINGKA.TTF", color='black', bg_color='transparent')

        text = text.set_position(((video.w - text.w) / 2, video.h - text.h - 20)).set_start(all_time).set_duration(time)
        # text = text.set_position('center').set_start(all_time).set_duration(time).set_opacity(0.5)
        all_time += time
        clips.append(text)

    # 将文字和音乐添加到视频中
    video = CompositeVideoClip(clips)

    # 导出视频
    video.write_videofile(out_path, fps=fps, codec='libx264', audio_codec='aac', bitrate='16M')

注:
记录一个另外的知识,codec= libx264比 mpeg4的编码视频分辨率更高。

以下是使用MoviePy视频添加字幕的步骤: 1. 安装MoviePy库。可以通过在命令行中运行以下命令来安装MoviePy: ``` pip install moviepy ``` 2. 导入MoviePy库和其他必要的库。以下是一个示例代码: ``` from moviepy.editor import * from moviepy.video.tools.subtitles import SubtitlesClip from moviepy.video.tools.subtitles import TextClip ``` 3. 创建一个SubtitlesClip对象。SubtitlesClip对象将会用于添加字幕。以下是一个示例代码: ``` subtitles = SubtitlesClip('path/to/subtitles.srt', fontsize=24) ``` 在这个代码中,我们创建了一个SubtitlesClip对象,并将字幕文件的路径传递给它。fontsize参数指定了字幕的字体大小。 4. 创建一个TextClip对象。TextClip对象将用于创建一个包含字幕视频。以下是一个示例代码: ``` text = TextClip('path/to/subtitles.srt', fontsize=24) ``` 在这个代码中,我们创建了一个TextClip对象,并将字幕文件的路径传递给它。fontsize参数指定了字幕的字体大小。 5. 将TextClip对象和SubtitlesClip对象合并成一个视频。以下是一个示例代码: ``` video = CompositeVideoClip([text, subtitles.set_pos(('center', 'bottom'))]) ``` 在这个代码中,我们使用CompositeVideoClip对象将TextClip对象和SubtitlesClip对象合并成一个视频。set_pos方法将SubtitlesClip对象放置在视频的底部中心。 6. 将字幕添加视频中。以下是一个示例代码: ``` video_with_subtitles = video.set_duration(10).subclip(0, 10).resize(0.5) original_video = VideoFileClip('path/to/video.mp4') final_video = CompositeVideoClip([original_video, video_with_subtitles]) final_video.write_videofile('path/to/final_video.mp4') ``` 在这个代码中,我们将原始视频加载到一个VideoFileClip对象中。然后,我们使用CompositeVideoClip对象将原始视频和包含字幕视频合并成一个最终视频。最后,我们使用write_videofile方法将最终视频保存到磁盘中。在这个示例代码中,我们将最终视频的持续时间设置为10秒,并将其剪辑为从0秒到10秒。我们还将最终视频的大小缩小了一半。 完成以上步骤后,您应该能够使用MoviePy视频添加字幕
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值