调整srt字幕时间,Python实现

更新时间:2018-07-25 17:58:31 点击次数:1430次

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

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

代码如下:


  1. def adjust_srt(x, y = r'd:/output/new.src', z = 0):
  2. """
  3. 调整视频字幕时间,+z字幕延后z秒显示,输出新文件
  4. x:原字幕文件路径
  5. y:输出调整后文件路径+文件名
  6. z:调整时间(s)
  7. 注:函数仅适用于整体调整,字幕随时间阶段偏移的情况比较复杂,
  8.   相对也比较少见,在此就不追加分段调整功能了,感兴趣的可以自己完善~
  9. """
  10. import re, datetime, os
  11. f0 = open(r'' + x, 'r')
  12. pat = r"\d\d:\d\d:\d\d" # 正则表达式
  13. f1 = f0.read()
  14. l0 = re.findall(pat, f1) # 正则过滤所有字幕显示时间,输出是一个列表
  15. temp = []
  16. for i in l0:
  17. h = int(i[0: 2])
  18. m = int(i[3: 5])
  19. s = int(i[6:])
  20. delta = datetime.timedelta(seconds = z) # 调整时间
  21. t = datetime.datetime(2018, 07, 20, h, m, s) + delta # 加入年月日格式化调整后的字幕时间
  22. t1 = datetime.datetime.strftime(t, '%H:%M:%S') # 去掉年月日
  23. temp.append(t1) # 得到调整后的时间列表
  24. result = []
  25. for i in range(len(temp)):
  26. f1 = f1.replace(l0[i], temp[i]) # 替换字幕时间
  27. if os.path.exists(y[0:10]): # 判断输出路径是否存在
  28. pass
  29. print "it's already exists"
  30. else:
  31. print 'make dir'
  32. os.mkdir(y[0:10]) # 不存在则新建目录
  33. new = open(y, 'w')
  34. new.write(f1) # 将调整后文件写入
  35. f0.close()
  36. new.close()
  37. path = r'C:\Users\Administrator\Desktop\for_python\wt2.txt'

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!