python 视频字幕替换_利用python调整srt字幕时间轴

我们有时候下载了超高清资源但是没有合适的字幕,往往由于资源的不同,视频和字幕会有几秒钟的时差,这个时候选择重新下载视频显得十分的麻烦。

批量调整字幕时间轴就是一个很好的办法。网上关于调整字幕时间轴有很多教程,但是往往要求我们下载安装一些奇怪的,或者很大的软件,这显然是很麻烦的,而且有时也会带来全家桶。批量调整字幕时间轴其实是一个很小的功能,一段python程序就能够解决。

1.首先新建python文件:****.py

2.将自己的字幕文件重命名为txt文件,然后复制到python文件同目录下

3.复制粘贴程序

# -*- coding:utf-8 -*-

import re,os,time,math,os.path,datetime

#提取时间戳,

def time_stamp2time(x):

time_list = [str(i) for i in x.split(' --> ')]

time_list1_1 = [x for x in time_list[0].split(':')]

time_list1_2 = [int(x) for x in time_list1_1[2].split(',')]

time_list1_1.pop()

time_list2_1 = [x for x in time_list[1].split(':')]

time_list2_2 = [int(x) for x in time_list2_1[2].split(',')]

time_list2_1.pop()

t1=[int(time_list1_1[0]),int(time_list1_1[1]),(time_list1_2[0]+time_list1_2[1]/1000)]

t2=[int(time_list2_1[0]),int(time_list2_1[1]),(time_list2_2[0]+time_list2_2[1]/1000)]

return t1,t2

#加上指定的时间

def modifying_time(time,s):

time[2] = time[2]+s

if time[2] >= 60:

time[1] = time[1]+int(time[2]//60)

time[2] = time[2]%60

if time[1] >=60:

time[0] = time[0]+int(time[1]//60)

time[1] = time[1]%60

return time

#返回时间戳

def time2time_stamp(x):

x.append(round((x[2]-math.floor(x[2])),3))

x[2] = math.floor(x[2])

H = str(x[0]).zfill(2)

M = str(x[1]).zfill(2)

S = str(x[2]).zfill(2)

MS = str(int(x[3]*1000)).zfill(3)

time_stamp = H+':'+M+':'+S+','+MS

return time_stamp

f = input('请输入文件名(包括后缀):',)

s = float(input('请输入向后移动时间轴的秒数(向前则为负数):',))

starttime = datetime.datetime.now()

#打开字幕文件

with open(f,'r') as f1:

path,name = os.path.split(f)

f2 = open(os.path.join(path,'Temporary.txt'),'a')

for line in f1:

if re.match(r'\d{1,2}:\d{1,2}:\d{1,2},\d{1,3} --> \d{1,2}:\d{1,2}:\d{1,2},\d{3}',line):

line = line.strip()

time_stamp1 = line

t1,t2 = time_stamp2time(time_stamp1)

t1 = modifying_time(t1,s)

t2 = modifying_time(t2,s)

time_stamp_1 = time2time_stamp(t1)

time_stamp_2 = time2time_stamp(t2)

time_stamp2=time_stamp_1+' --> '+time_stamp_2+'\n'

line = time_stamp2

f2.write(line)

f2.close()

#写入完毕后删除原文件

os.remove(name)

os.rename('Temporary.txt',name)

endtime = datetime.datetime.now()

print ('转换耗时:',endtime - starttime)

4.运行python程序

5.重命名回srt

大功告成。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值