深圳夜归人

繁华的都市,有谁记得我们的脚步?

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
使用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,如果是提前则设为正值。
posted on 2005-07-31 15:17  cpunion  阅读(3240)  评论(0编辑  收藏  举报