有些熱門的片子,字幕就很齊全,簡繁英俱全,
有的影片卻只找得到簡體字版,
雖然簡體字看起來實在不習慣,不過多懂一些還是有益處,
所以會嘗試去接受這類的字幕,如果真的受不了(簡體字有點醜)
可以使用下列指令轉換成順眼悅目的正體字:
iconv -f gb2312 -t big5 gb.srt | iconv -f big5 -t utf-8 > utf8.srt
(* 人生不是所有事情都是完美的 *)
有時候,中文字幕是標準的正體沒錯,但顯示的時間就是不對,
答非所問,荒腔走板,空有字幕檔也沒有用,仰天長嘆,莫可奈何。
沒辦法還是要正向思考,提昇一下層次,學習看英文字幕好了(還是那句話:"多懂一些還是有益處"的 )
問題是,有的影片雅俗共賞,講得也都是"人"話,不會天馬行空,那就勉強可以看下去。
但,天不從人願,有的影片的編劇擺明就是火星來的,生字一堆,講得又快,不是看不懂,就是看得不夠快。
今天碰到的狀況是這個樣子,英文字幕OK,有中文字幕,但時間不對。
想辦法將兩個字幕合併,保留英文字幕的時間,再用中文字幕的文字來取代英文。
步驟有三:
(1) 讀取中文字幕,去除時間,保留中文字 ,寫入YAML檔。
(2) 目視比對中英文字幕,調整差異處。
(3) 讀取英文字幕,去除英文,代入中文。
* 中文字幕
24 00:02:47,444 --> 00:02:50,572 我們在讀《雙城記》,還不錯吧? 25 00:02:50,814 --> 00:02:53,009 那不是狄更斯的代表作 學校裡比較流行 26 00:02:53,216 --> 00:02:57,880 我認為《大衛·科波維爾》 和《遠大前程》內容更好
* 轉成YAML格式檔
- - 21 - 我們在讀《雙城記》,還不錯吧? - - 22 - 那不是狄更斯的代表作 - 學校裡比較流行 - - 23 - 我認為《大衛·科波維爾》 - 和《遠大前程》內容更好
* 轉換YAML程式
use strict;
use Encode qw/decode/;
use YAML qw/DumpFile/;
open SRT, '<', 'big.srt';
my @srt;
my @srtline;
my $index;
while (<SRT>) {
chomp;
s/\r//;
my $line = decode('utf-8', $_);
if ($line =~ /^\d+\b/) {
next
}
elsif ($line =~ /^\s*$/) {
$index++;
push @srt, [$index, @srtline];
@srtline = ();
}
else {
push @srtline, $line;
}
}
DumpFile('big.yml', \@srt);* 合併程式
use strict;
use utf8;
use Encode qw/decode/;
use YAML qw/LoadFile/;
open SRT, '<', 'eng.srt';
binmode STDOUT, ":utf8";
my @srt = @{LoadFile('big.yml')};
while (<SRT>) {
my $line = decode('utf-8', $_);
if ($line =~ /^\d+\b/) {
print;
}
elsif ($line =~ /^\s*$/) {
my @line = @{ shift @srt };
shift @line;
print "$_\n" for @line;
print "\n";
}
else {
* just ignore them
}
}一點小小的加工,得到合理的結果,太完美了 :-) 。
ps. 影片名稱:《The Squid and the Whale》
沒有留言:
張貼留言