字幕转换: vtt转为srt

背景:

使用文本合成音频生成的字幕为vtt文件, 但是 python moviepy中只能使用 srt 格式的字幕。 因此需要将 vtt 字幕转换成 srt

解决方法:

使用python 代码转换文件 (从网上找的代码,更正了其中的bug)


import re
import os


def vtt2srt(filePath):
    fileSplitName=os.path.splitext(filePath)
    print("fileSplitName....", fileSplitName)
    if(fileSplitName[1]==".vtt"):
        with open(filePath,"r",encoding="utf-8") as fin:
            fileContent=fin.readlines()
            lineNum=2
            fileMaxLineNum=len(fileContent)
            with open(fileSplitName[0]+".srt","w",encoding="utf-8") as fout:
                fout.write("1\n")
                for i in range(2,fileMaxLineNum):
                    if(fileContent[i].strip().isdigit()):
                        continue
                    #tempStr=fileContent[i].replace(".",",")
                    if re.match(r"(\d\d:\d\d:)",fileContent[i])==None :
                        fout.write(re.sub(r"(\d\d:)",lambda m:"00:"+m.group(0),fileContent[i]))
                    else:
                        fout.write(fileContent[i].replace(".", ","))

                    if(fileContent[i].strip()=="" and i+1<fileMaxLineNum and fileContent[i+1].strip()!=""):
                        fout.write(str(lineNum)+"\n")
                        lineNum+=1

调用: vtt2srt("subtitle.vtt") 输出的文件为: subtitle.srt

python 中使用字幕:

from moviepy.editor import VideoFileClip, CompositeVideoClip
from moviepy.video import VideoClip
from moviepy.video.tools.subtitles import SubtitlesClip
import os

base_path= "."
myvideo = VideoFileClip("myvideo.mp4")
generator = lambda txt: VideoClip.TextClip(txt,  font="PingFang-SC-Thin",fontsize=24, color='white')
subtitle_clip = SubtitlesClip(   os.path.join(base_path, str(video_id) + ".srt"), generator ).set_pos(('center','bottom'    ))
final_clip = CompositeVideoClip([ final_clip, subtitle_clip])
final_clip.write_videofile("video.mp4", fps=24)

其中,通过以下命令查看系统的font有哪些

from moviepy.video import VideoClip
print(VideoClip.TextClip.list('font'))

具体参考官方文档: https://zulko.github.io/moviepy/ref/videotools.html?highlight=font

相关推荐

  1. 字幕转换: vtt转为srt

    2024-06-06 00:00:04       9 阅读
  2. aspose-words字体转换

    2024-06-06 00:00:04       30 阅读
  3. 字母循环转换(‘z‘转换为‘a‘)

    2024-06-06 00:00:04       83 阅读
  4. 转 义 字 符

    2024-06-06 00:00:04       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 00:00:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 00:00:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 00:00:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 00:00:04       20 阅读

热门阅读

  1. 都可以写好后端接口

    2024-06-06 00:00:04       6 阅读
  2. 服务器环境搭建

    2024-06-06 00:00:04       9 阅读
  3. Sass详解

    2024-06-06 00:00:04       8 阅读
  4. React@16.x(19)事件的处理

    2024-06-06 00:00:04       11 阅读
  5. Mysql详解

    2024-06-06 00:00:04       10 阅读
  6. Docker修改数据目录

    2024-06-06 00:00:04       9 阅读
  7. python连接数据库

    2024-06-06 00:00:04       9 阅读
  8. 深度解析Go语言中的Slice切片

    2024-06-06 00:00:04       7 阅读
  9. 使用 Docker 和 Docker Compose 部署 Vue

    2024-06-06 00:00:04       8 阅读