ターミナルでのテキストのタイムド表示、おそらく若干のマークアップ(太字、色)。別名「.srt 字幕の再生」

ターミナルでのテキストのタイムド表示、おそらく若干のマークアップ(太字、色)。別名「.srt 字幕の再生」

メディア プレーヤーとは独立して、スクロール テキスト ターミナルに個別の字幕を表示して言語学習を容易にしたい場合や、他のビューアーよりも多くの字幕や異なる字幕が必要な場合、基本的にはスタンドアロンの字幕プレーヤーが必要です。

私が表示しようとしている字幕の形式はsrt、簡単なテキストベースのフォーマット:

<indexNr>                    # Starts at 1, then 2, 3, ...
<startTime> --> <endtime>    # Both times in format "hh:mm:ss,ms"
<body1>                      # Subtitle text Line
<bodyN>                      # Optional following lines
<emptyLine>                  # Empty line as separator

例:

1
00:00:02,623 --> 00:00:05,054
U&L StackExchange Studios present
♫ Nice Tune playing ♫

2
00:00:06,823 --> 00:00:08,414
From the <b>A Quick Hack</b> series

3
00:00:10,123 --> 00:00:23,054
Viewing Srt Files with Perl:

~/bin/playSRT.sh: (現在やっていること)

#!/bin/sh
perl -lane 'BEGIN{$counter=1;}
if(@F[1]=~ /-->/) {
  @t=split(":",(split(",",@F[0]))[0]);
  $s=@t[0]*3600+@t[1]*60+@t[2] ;
  #print "Waiting until $s s @t[0] @t[1] @t[2]";
  sleep($s-$last); $last=$s;
} else {if (@F[0] == $counter) {$counter++} else {print }}
' "$1"

次に を実行しますplaySRT.sh MyFile.srtが、これは十分に機能しますが、一時停止/再開がぎこちなかったり、RW/FF が不可能であるなどの欠点があります。

もっと良い解決策を探しています。Google で検索しましたが、パッケージ マネージャーに適切なプログラムがありません。現時点では、上記の最適化/具体化を行って、+/-5 秒の再生/一時停止のキーボード入力を読み取るのが最善の選択肢だと思います。その点や、「下部に 2 つの字幕を小さく分割する」というクエストの新しい方向性について、助けを求めています。

関連情報