Programın çıkış noktası izlediğim bir dizide araya reklam girmesi sonucu altyazı uyumunun bozulmasıydı. Bunun üzerine basit bir program geliştirdim.
Kısaca, istediğiniz altyazı numaraları arasında milisaniye cinsinden zamanlamada toplu artırma veya eksiltme yapabiliryorsunuz. Şimdilik sadece srt dosyalarını desteklemekte. Gelişim vaat eden bir program

Download
Belki ilerde işleri daha ileri götürüp sıfırdan altyazı oluşturmak için bir programda yapılabilir. Bu arada program C# ile yazıldı. Kullanabilmek için net framework 3.5 gerekiyor.
Programda asıl işi yapan kaynak kodlar:
Harici html gösterim
Harici (numaralandırmasız) html gösterim
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.IO;
7 using System.Text;
8 using System.Windows.Forms;
9 using System.Diagnostics;
10
11 namespace Altyazı_2
12 {
13 public partial class Form1 : Form
14 {
15 public Form1()
16 {
17 InitializeComponent();
18 }
19 private void toolStripButton1_Click(object sender, EventArgs e)
20 {
21 openFileDialog1.Filter = “Srt dosyaları *.srt|*.srt”;
22 openFileDialog1.FileName = “”;
23
24 if (DialogResult.OK == openFileDialog1.ShowDialog())
25 {
26 StreamReader altyazitext_ = new StreamReader(openFileDialog1.FileName, Encoding.Default);
27
28 string[] metin=null;
29 string text1=“”,text2=“”;
30 int sira = 0;
31 bool durum=false;
32
33 while (!altyazitext_.EndOfStream)
34 {
35 if (durum == false)
36 {
37 listView1.Items.Add(altyazitext_.ReadLine());
38 metin = altyazitext_.ReadLine().Split(‘ ‘);
39 listView1.Items[sira].SubItems.Add(metin[0]);
40 listView1.Items[sira].SubItems.Add(metin[2]);
41 durum= true;
42 }
43 text1=altyazitext_.ReadLine();
44 if (text1==“”)
45 {
46 listView1.Items[sira].SubItems.Add(text2);
47 durum = false;
48 sira++;
49 text1=text2=“”;
50 }
51 else
52 {
53 text2=text2+text1+“\n”;
54 }
55 }
56 altyazitext_.Close();
57
58 textbas.Text = “1″;
59 textson.Text = sira.ToString();
60 }
61 }
62
63 private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
64 {
65 if (e.IsSelected)
66 {
67 MessageBox.Show(e.Item.Text);
68 }
69 }
70
71 private void Uygula_Click(object sender, EventArgs e)
72 {
73 bool hata;
74 this.ValidateChildren();
75
76 hata = (errorProvider1.GetError(textbas) == “”) &&
77 (errorProvider1.GetError(textson) == “”) &&
78 (errorProvider1.GetError(textsaniye) == “”) &&
79 (errorProvider1.GetError(radioartir) == “”) &&
80 (errorProvider1.GetError(radioeksilt) == “”);
81
82 if (hata != true)
83 return;
84 //Stopwatch watch = new Stopwatch();
85 //watch.Start();
86 int sure = Convert.ToInt32(textsaniye.Text);
87 if (radioartir.Checked==false)
88 sure = -sure;
89 zamanlama zaman=new zamanlama(new TimeSpan(0,0,0,0,sure));
90
91 for (int i = Convert.ToInt32(textbas.Text) – 1; i < Convert.ToInt32(textson.Text); i++)
92 {
93 listView1.Items[i].SubItems[1].Text = zaman.kur(listView1.Items[i].SubItems[1].Text, sure);
94 listView1.Items[i].SubItems[2].Text = zaman.kur(listView1.Items[i].SubItems[2].Text, sure);
95 }
96 //toolStripStatusLabel1.Text = watch.Elapsed.TotalMilliseconds.ToString()+ ” mili saniyede tamamlamdı…”;
97 //watch.Stop();
98 }
99
100 class zamanlama
101 {
102 TimeSpan timing;
103 public string zaman;
104 public int saat;
105 public int dakika;
106 public int saniye;
107 public int salise;
108
109 public zamanlama(TimeSpan t)
110 {
111 timing = t;
112 }
113
114 public string kur(string zaman, int saniye)
115 {
116 DateTime t=parse(zaman);
117
118 this.zaman = (t + timing).ToString(“HH:mm:ss,fff”);
119
120 return this.zaman;
121
122 }
123
124 DateTime parse(string zaman)
125 {
126 saat = Convert.ToInt32(zaman.Substring(0, 2));
127 dakika = Convert.ToInt32(zaman.Substring(3, 2));
128 saniye = Convert.ToInt32(zaman.Substring(6, 2));
129 salise = Convert.ToInt32(zaman.Substring(9, 3));
130
131 return new DateTime(1,1,1,saat,dakika,saniye,salise);
132 }
133
134 public void sil()
135 {
136
137 }
138 }
139
140 private void toolStripButton2_Click(object sender, EventArgs e)
141 {
142 saveFileDialog1.Filter = “Srt dosyası *.srt|*.srt”;
143 string[] text;
144 if(DialogResult.OK==saveFileDialog1.ShowDialog())
145 {
146 Encoding eng = Encoding.Default;
147 TextWriter yaz = new StreamWriter(saveFileDialog1.FileName,true,eng);
148 int son = listView1.Items.Count;
149 for(int i =0;i<son;i++)
150 {
151 yaz.WriteLine(i.ToString());
152 yaz.WriteLine(listView1.Items[i].SubItems[1].Text + ” –> “ + listView1.Items[i].SubItems[2].Text);
153 text = listView1.Items[i].SubItems[3].Text.Split(‘\n’);
154 foreach( string t in text)
155 {
156 if (t!=“”)
157 yaz.WriteLine(t);
158 }
159 yaz.WriteLine();
160 }
161 yaz.Close();
162 }
163 }
164 private void textbas_Validating(object sender, CancelEventArgs e)
165 {
166 if (textbas.Text == “”)
167 errorProvider1.SetError(textbas, “Boş bırakılamaz, Başlangıç numarasını girin”);
168 else
169 errorProvider1.SetError(textbas, “”);
170 }
171 private void textson_Validating(object sender, CancelEventArgs e)
172 {
173 if (textson.Text == “”)
174 errorProvider1.SetError(textson, “Boş bırakılamaz, Son altyazı numarasını girin”);
175 else
176 errorProvider1.SetError(textson, “”);
177 }
178 private void textsaniye_Validating(object sender, CancelEventArgs e)
179 {
180 if (textsaniye.Text == “”)
181 errorProvider1.SetError(textsaniye, “Boş bırakılamaz, Milisaniye cinsinden süreyi girin”);
182 else
183 errorProvider1.SetError(textsaniye, “”);
184 }
185 private void radioartir_Validating(object sender, CancelEventArgs e)
186 {
187 radio();
188 }
189 private void radioeksilt_Validating(object sender, CancelEventArgs e)
190 {
191 radio();
192 }
193 private void radioartir_CheckedChanged(object sender, EventArgs e)
194 {
195 radio();
196 }
197 private void radioeksilt_CheckedChanged(object sender, EventArgs e)
198 {
199 radio();
200 }
201 private void radio()
202 {
203 if (radioartir.Checked == false && radioeksilt.Checked == false)
204 {
205 errorProvider1.SetError(radioartir, “Birini seçmek zorundasiniz”);
206 errorProvider1.SetError(radioeksilt, “Birini seçmek zorundasiniz”);
207 return;
208 }
209 else
210 {
211 errorProvider1.SetError(radioartir, “”);
212 errorProvider1.SetError(radioeksilt, “”);
213 }
214 }
215 private void toolStripButton3_Click(object sender, EventArgs e)
216 {
217 Uygula_Click(sender, e);
218 }
219 }
220 }

çok teşekür ederim emeğin için işime yaradı bazen sazanlar izlediğim filme bir kaç saniyelik bir şey eklediğinde alt yazı uyumsuzluğu oluyodu bende videoyu kesme zahmetine giriyodum bu program sayesinde artık ona gerek kalmadı
çok teşekür ederim çok teşekür