annotate TOOLS/vobshift.py @ 36545:f0e92381681d

Add support for files with MLTI chunks. Fixes 06.rm and 08_lect_01.rm from FFmpeg trac #2152 Fixes also files from ftp://ftp.aduni.org/videos/ The patch has these limitations: - no multirate files with MLTI chunks - no mixed files (eg. MLTI for audio but not for video) - no MLTI for video together with non-ra audio (eg. ralf) - only DATA v0 (no v1, versions greater than 1 should not exist) Files with these feature shuld not really exist anyway. Also video MLTI files with only one stream are supported but untested
author rtogni
date Sun, 19 Jan 2014 15:12:46 +0000
parents 0f1b5b68af32
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15829
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
1 #!/usr/bin/env python
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
2
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 15829
diff changeset
3 #usage:
15829
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
4 #
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
5 # vobshift.py in.idx out.idx -8.45
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
6 #
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
7 # this will read in in.idx,shift it by 8.45 seconds back,
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
8 # and save it as out.idx
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
9 #
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
10 # license: i don't care ;)
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
11 #
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
12
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
13 import datetime
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
14 import sys
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
15
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
16 def tripletize(line):
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
17 begin = line[:11]
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
18 middle = line[11:23]
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
19 end = line[23:]
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
20 return (begin,middle,end)
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
21
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
22 def text2delta(t):
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
23 h = int( t[0:2] )
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
24 m = int( t[3:5] )
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
25 s = int( t[6:8] )
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
26 milli = int( t[9:12] )
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
27 return datetime.timedelta(hours=h,minutes=m,seconds=s,milliseconds=milli)
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
28
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
29 def delta2text(d):
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
30 t = str(d)
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
31 milli = t[8:11]
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
32 if len(milli) == 0: #fix for .000 seconds
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
33 milli = '000'
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
34 return '0'+t[:7]+':'+milli
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
35
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
36 def shift(line,seconds):
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
37 triplet = tripletize(line)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 15829
diff changeset
38
15829
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
39 base = text2delta(triplet[1])
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
40 base = base + datetime.timedelta(seconds=seconds)
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
41 base = delta2text(base)
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
42
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
43 return triplet[0]+base+triplet[2]
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
44
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
45 INFILE =sys.argv[1]
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
46 OUTFILE =sys.argv[2]
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
47 DIFF =float(sys.argv[3])
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
48
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
49 o = open(OUTFILE,'wt')
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
50
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
51
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
52 for line in open(INFILE):
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
53 if line.startswith('timestamp'):
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
54 line = shift(line,DIFF)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 15829
diff changeset
55
15829
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
56 o.write(line)
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
57
96b84e3a0d96 vobsub time-adjust tool by Gbor Farkas < gabor AH nekomancer POUM net >
gpoirier
parents:
diff changeset
58 o.close()