1. 見たい動画のIDをTranslations Talks in 日本語から見つける。
2. 字幕と映像を入手。映像はTEDのページにあるダウンロードリンクから。字幕は↓のような感じで。
wget -O - http://www.ted.com/talks/subtitles/id/${TALKID}/lang/jpn > jpn.json
3. ダウンロードした字幕は、JSONなので、SRTとやらに変えてあげる。使ったスクリプト↓
#!/usr/bin/python # -*- encoding: utf-8 -*- import sys import codecs from datetime import date, datetime, time, timedelta import simplejson as json sys.stdin = codecs.getreader('utf-8')(sys.stdin) sys.stdout = codecs.getwriter('utf-8')(sys.stdout) def timestr(timeobj): return timeobj.strftime('%H:%M:%S,') + '%03d' % (timeobj.microsecond // 1000) # MAX_CHARS文字より長いときは2行に分ける MAX_CHARS=25 def main(): f = open(sys.argv[1], 'r') captions = json.load(f)['captions'] for i, c in enumerate(captions): startTime = int(c['startTime']) duration = int(c['duration']) # TEDのスプラッシュの時間を加える startTime += 16000 st = datetime.combine(date.today(), time(0, 0)) + timedelta(milliseconds=startTime) et = st + timedelta(milliseconds=duration) if len(c['content']) > MAX_CHARS: print u'%d\n%s --> %s\n%s\n%s\n' % (i+1, timestr(st), timestr(et), c['content'][0:MAX_CHARS], c['content'][MAX_CHARS:]) else: print u'%d\n%s --> %s\n%s\n' % (i+1, timestr(st), timestr(et), c['content']) if __name__ == '__main__': main()4. mencoderで動画と字幕をひっつける。動画のファイルがvideo.mp4、字幕のファイルがjpn.srtとしてます。↓としたらiPod Touchでも見られた。
mencoder video.mp4 -ofps 30 -sws 9 -of lavf -lavfopts format=ipod -vf scale=-10:240,dsize=320:240:0,harddup -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:vbitrate=448:acodec=libfaac:abitrate=128 -oac lavc -alang en -srate 22050 -sub jpn.srt -utf8 -slang ja -subalign 0 -subpos 93 -subfont-outline 5 -subfont-text-scale 3 -font 'Meiryo' -sub-bg-alpha 255 -o video_sub.mp4
0 件のコメント:
コメントを投稿