放送大学の字幕ファイル
放送大学はMicrosoftのSAMIを使っている samiファイル本体: vod.ouj.ac.jp/v1/tenants/1/vod-contents/授業ID/sami
shift_jisなので
brew install nkf
nkf -g ファイル: 文字コードを調べる
nkf -s --overwrite ファイル
-s: utf-8に変換
--overwrite: ファイルを上書き
code:srtの例
speaker=VOA
title=michael jackson
author=mint
date=2015/12/22
1
00:00:00,000 ‒‒> 00:00:00,762
Today
2
00:00:00,762 ‒‒> 00:00:04,653
we tell about one of the most famous performers in the world,
3
00:00:04,653 ‒‒> 00:00:05,887
Michael Jackson.
できた
HTMLファイルがあるので除去しないといけない
</?span.*?>
<ruby>\.<rt>\.<.rt></ruby>
~ → 〜
\.
</?ruby>
<rt> → (
</rt> → )
できてなかった。半分欠損してた
自前で変換したほうが早そう
smiファイルをフォーマットする
削除
<SAMI>[\s\S\r]*<Body>[\s\S\r]|</Body></SAMI>|</?SPAN.*?>|</?P.*?>|<RUBY>\.<RT>\.</RT></RUBY>|\.|</?RUBY>|</Sync>
置換
<RT>→(
</RT>→)
~→ 〜
<br/> → \n
<Sync.*?/>: 削除
<br/>後でないとだめ
.*JPCCLast.*: 削除
あとで一括に組み込んでみる
.*?Start="(\d*?)".*?> → $1\n
キャプチャでmsだけ取り出して改行
code:srt
2000
♪〜
(テーマ音楽)
7000
♪〜
41000
44000
(高野(たかの))こんにちは
全15回の授業を担当している→
47000
客員教授の高野(たかの)陽太郎(ようたろう)です。
あとやること
時間の上に番号追加
msを00:00:00,000形式に変換
時間を前後と-->でつなぎ合わせていく
時間は開始時刻
[\s\S]+?\n{2}で改行+ms+本文+改行を取得
code:srt
\n
50000
今回のテーマは 学習です。
学習というと→
\n
srtは終了時間が必要なので普通にループを回すだけではできない
reduceでやった
CLIだと便利?
commanderでできそう
iconv-liteで変換
ffmpeg -i output.mp4 -vf "subtitles=sample4.srt:force_style='FontName=ヒラギノ角ゴシック W6, BorderStyle=3" out.mp4