cpunion
使用Media Player Classic播放外挂字幕的电影,有时会出现字幕和语音有偏移的情况,这个可能有2个原因:
1、加载字幕文件时,系统忙造成偏移;
2、字幕文件本身时间不准;

对于第1种情况,只要打开视频文件,加载字幕以后按停止,再按播放即可解决。
第2种情况就需要特别处理了,一般会整个播放期间都有偏移,所以我们只需要把字幕文件里的时间相应作个位移即可,以下是用python写的调整脚本:

offset = -13 # 需要位移的时间,单位是秒
## 下面分别是源文件和输出文件
## 写GUI是个麻烦事,使用命令行也会好用多少,所以先放在这里了,要修改只需要改这个即可。
src_file 
= \'[我是谁].Jackie.Chan.-.Who.Am.I.(1998).DVDRip.AC3.imagecker-PoD-CD2.srt\'
dest_file 
= \'cd2.srt\'

import re

= open (src_file, \'r+\')
fcopy 
= open (dest_file, \'w+\')

need_write 
= False
group 
= \'\'
for line in f.readlines ():
    
if len(line.strip()) == 0: # blank line, write a group lines
        group 
+= line
        
if need_write:
            fcopy.write (group)
        group 
= \'\'
        
continue        
    result 
= re.findall(\'^(\\d+):(\\d+):(\\d+),(\\d+) --> (\\d+):(\\d+):(\\d+),(\\d+)$\', line)
    
if len(result) != 1 or len(result[0]) != 8:
        group 
+= line
        
continue
    result 
= map(int, result [0])
    start 
= result[0* 3600 + result[1* 60 + result[2+ offset
    end 
= result[4* 3600 + result[5* 60 + result[6+ offset

    
if start < 0 or end < 0:
        need_write 
= False
        
continue
    result[
0= start / 3600
    start 
%= 3600
    result[
1= start / 60
    start 
%= 60
    result[
2= start

    result[
4= end / 3600
    end 
%= 3600
    result[
5= end / 60
    end 
%= 60
    result[
6= end

    line 
= \'%02d:%02d:%02d,%03d --> %02d:%02d:%02d,%03d\r\n\' % tuple(result)
    group 
+= line
    need_write 
= True

if group:
    fcopy.write (group)
fcopy.close()
f.close()

我在观看verycd.com上下载的《我是谁》时,由于字幕比语音落后了13秒,所以这里参数设为-13,如果是提前则设为正值。

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-09-14
  • 2021-07-23
  • 2021-11-28
  • 2021-04-13
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-21
  • 2021-12-12
  • 2021-10-15
  • 2021-04-13
  • 2022-12-23
  • 2021-12-04
相关资源
相似解决方案