调整srt字幕时间,Python实现

博主在观看《生活大爆炸》时遇到字幕与声音不同步的问题,为了解决这一问题,决定利用Python编写一个小程序来批量调整srt字幕的时间,以确保字幕准确同步。代码实现分享,方便未来类似需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近看《生活大爆炸》碰到字幕时间和声音不同步的问题,字幕或提前或延后的,实在恼人。

打开字幕原文件一看,4、5百条,手工调整什么的就算了,用Python自己写个小程序吧,没准以后追别的剧还能用到呢。

代码如下:

def adjust_srt(x, y = r'd:/output/new.src', z = 0):
    """
    调整视频字幕时间,+z字幕延后z秒显示,输出新文件
    x:原字幕文件路径
    y:输出调整后文件路径+文件名
    z:调整时间(s)
    注:函数仅适用于整体调整,字幕随时间阶段偏移的情况比较复杂,
    相对也比较少见,在此就不追加分段调整功能了,感兴趣的可以自己完善~
    """
    import re, datetime, os
    f0 = open(r'' + x, 'r')
    pat = r"\d\d:\d\d:\d\d" # 正则表达式
    f1 = f0.read()
    l0 = re.findall(pat, f1) # 正则过滤所有字幕显示时间,输出是一个列表

    temp = []
    for i in l0:
        h = int(i[0: 2])
        m = int(i[3: 5])
        s = int(i[6:])
        delta = datetime.timedelta(seconds = z) # 调整时间
        t = datetime.datetime(2018, 07, 20, h, m, s) + delta # 加入年月日格式化调整后的字幕时间
        t1 = datetime.datetime.strftime(t, '%H:%M:%S') # 去掉年月日
        temp.append(t1) # 得到调整后的时间列表

    result = []
    for i in range(len(temp)):
        f1 = f1.replace(l0[i], te
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值