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
大功告成。
總結
以上是生活随笔為你收集整理的python 视频字幕替换_利用python调整srt字幕时间轴的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python—包
- 下一篇: 144hz minidp转dp_毕亚兹m