零代码编程:用kimichat将srt字幕文件进行批量转换合并

文件夹里面有多个srt字幕文件,借助kimichat可以很方便的对其进行批量合并。

在kimichat中输入提示词:

你是一个Python编程专家,写一个Python脚本,完成一个处理整理文档内容的任务,具体步骤如下:

打开文件夹:E:\新建文件夹,

找到文件夹里面所有的srt后缀文件;

删掉srt文件里面所有的时间轴,比如:00:00:06,339 --> 00:00:11,594

删掉里面所有的序号,比如 1、2、3,注意:不要删掉文本里面的数字,比如”(200万年前)”中的200;

然后将所有的srt文件内容按照文件名称顺序合并,另存为一个新的word文档,保持到文件夹:E:\新建文件夹;

部分原文档内容如下:

###

1

00:00:06,339 --> 00:00:11,594

(200万年前)

2

00:00:23,064 --> 00:00:28,945

200万年前

我们的星球与现在完全不同

3

00:00:34,325 --> 00:00:36,286

牙齿像剑一般的猫科动物

###

整理文档后的文档内容,应该是这样:

###

(200万年前)

200万年前

我们的星球与现在完全不同

牙齿像剑一般的猫科动物

###

这是kimichat给出的Python源代码:

import os

import re

from docx import Document

# 指定文件夹路径

folder_path = r'E:\新建文件夹'

# 正则表达式模式,用于匹配时间轴和序号

time_pattern = re.compile(r'\d+:\d+:\d+,\d+ --> \d+:\d+:\d+,\d+')

number_pattern = re.compile(r'^\d+\n')

# 初始化一个空的Word文档,用于存放合并后的内容

merged_document = Document()

# 获取文件夹中所有.srt文件的列表,并按文件名排序

srt_files = sorted([f for f in os.listdir(folder_path) if f.endswith('.srt')])

# 遍历所有.srt文件

for filename in srt_files:

# 构建完整的文件路径

file_path = os.path.join(folder_path, filename)

# 读取文件内容

with open(file_path, 'r', encoding='utf-8') as file:

content = file.readlines()

# 删除时间轴和序号

cleaned_content = []

for line in content:

line = re.sub(time_pattern, '', line) # 删除时间轴

line = re.sub(number_pattern, '', line) # 删除序号

if line.strip(): # 确保行不为空

cleaned_content.append(line)

# 将处理后的文本添加到Word文档中

for paragraph in cleaned_content:

merged_document.add_paragraph(paragraph.strip())

# 保存合并后的Word文档

word_filename = os.path.join(folder_path, 'merged_document.docx')

merged_document.save(word_filename)

print(f'所有文件已合并并保存到 {word_filename}')

这是程序运行后的结果:

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用JavaCV为视频添加srt字幕文件的示例代码: ``` import org.bytedeco.javacv.*; public class VideoSubtitles { public static void main(String[] args) throws Exception { // 读取视频文件 FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("input.mp4"); grabber.start(); // 创建视频编码器 FFmpegFrameRecorder recorder = new FFmpegFrameRecorder("output.mp4", grabber.getImageWidth(), grabber.getImageHeight()); recorder.setVideoCodec(grabber.getVideoCodec()); recorder.setFormat(grabber.getFormat()); recorder.setFrameRate(grabber.getFrameRate()); recorder.start(); // 加载字幕文件 Subtitle subtitle = new Subtitle("subtitles.srt"); // 遍历视频帧 Frame frame; while ((frame = grabber.grabFrame()) != null) { // 获取当前帧的时间戳 long timestamp = grabber.getTimestamp(); // 添加字幕 String text = subtitle.getText(timestamp); if (text != null) { Java2DFrameConverter converter = new Java2DFrameConverter(); Frame subtitleFrame = converter.getFrame(subtitle.getImage(timestamp)); recorder.record(subtitleFrame); } // 添加视频帧 recorder.record(frame); } // 释放资源 recorder.stop(); recorder.release(); grabber.stop(); grabber.release(); } } ``` 以上代码使用了JavaCV库的FFmpegFrameGrabber和FFmpegFrameRecorder类来读取和写入视频文件,使用Subtitle类加载srt字幕文件,并使用Java2DFrameConverter类将字幕图片转换为视频帧。在遍历视频帧的过程中,根据当前帧的时间戳获取对应的字幕内容和字幕图片,并将它们添加到视频中。最后,释放资源并保存输出视频文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值