本開示に係る字幕生成装置及び字幕生成プログラムを実施するための形態について添付の図面を参照しながら説明する。各図において、同一又は相当する部分には同一の符号を付して、重複する説明は適宜に簡略化又は省略する。以下の説明においては便宜上、図示の状態を基準に各構造の位置関係を表現することがある。なお、本開示は以下の実施の形態に限定されることなく、本開示の趣旨を逸脱しない範囲において、各実施の形態の自由な組み合わせ、各実施の形態の任意の構成要素の変形、又は各実施の形態の任意の構成要素の省略が可能である。
実施の形態1.
図1から図7を参照しながら、本開示の実施の形態1について説明する。図1は字幕生成装置の機能的な構成を示すブロック図である。図2はWebVTT形式の字幕ファイルの一例を説明する図である。図3及び図4は字幕生成装置が生成するWebVTT形式の字幕ファイルの一例を説明する図である。図5から図7は字幕生成装置の処理例を示すフロー図である。
この実施の形態に係る字幕生成装置10は、図1に示すように、字幕抽出部11、終了時刻設定部12、開始時刻設定部13、分割字幕生成部14及びデータ出力部15を備えている。これらの各部は電子回路を用いて実現され、情報を表す電気的な信号を処理する。
字幕生成装置10は、ハードウェアとして、プロセッサ及びメモリを備えた1台以上のコンピュータから構成されていてもよい。プロセッサは、CPU(Central Processing Unit)、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータあるいはDSPともいう。メモリには、例えば、RAM、ROM、フラッシュメモリー、EPROM及びEEPROM等の不揮発性または揮発性の半導体メモリ、又は、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク及びDVD等が該当する。
字幕生成装置10のメモリには、ソフトウェアとしてのプログラムが記憶される。そして、字幕生成装置10は、メモリに記憶されたプログラムをプロセッサが実行することによって予め設定された処理を実施し、ハードウェアとソフトウェアとが協働した結果として、以下に説明する各部の機能を実現する。すなわち、字幕生成装置10のメモリに記憶されたプログラムは、字幕生成装置10のコンピュータを、以下に説明する各部として機能させる字幕生成プログラムである。
字幕抽出部11は、外部から入力される放送信号を取り込み、取得した放送信号から字幕データを抽出する。放送信号は、例えばSDI(Serial Digital Interface:シリアル・デジタル・インターフェース)で字幕生成装置10に伝送されてくる。SDIは、放送用機器に用いられる標準的なインターフェースである。放送信号の形式は、ARIB(Association of Radio Industries and Business:一般社団法人電波産業会)で策定された標準規格に基づくものである。字幕データも、ARIBの規定にしたがって、入力される放送信号に重畳されている。字幕データは、HD-SDI又はSD-SDIの垂直ブランキング領域に格納されており、字幕抽出部11はこの字幕データを抽出する。字幕データが、放送信号の他の領域に格納されていてもよい。
なお、字幕生成装置10に入力される放送信号のインターフェースはSDIに限られない。他に例えば、字幕生成装置10に入力される放送信号は、RTP(Real-time Transport Protocol)等を用いてIP(Internet Protocol)ネットワーク上に送出されたものであってもよい。RTPを用いる場合、放送信号に含まれる映像及び音声データは、例えばリアルタイムエンコーダ等を用いてMPEG2-TS(Moving Picture Experts Group2-Transport Stream)形式にエンコードされたものである。また、RTPを用いる場合も放送信号には、例えばARIBで規定されている字幕データが重畳されている。この場合、字幕抽出部11は、MPEG2-TSのエレメンタリストリームから、字幕データを抽出する。
このようにして、字幕抽出部11は、外部から字幕データを取得する。そして、字幕抽出部11は、取得した字幕データから字幕テキストを抽出する。また、字幕データには、字幕テキストの表示を開始するタイミングを指定する情報も含まれている。字幕抽出部11は、取得した字幕データから、字幕テキストの表示を開始するタイミングを指定する情報を当該字幕テキストの第1表示開始時刻として抽出する。換言すれば、字幕抽出部11は、取得した字幕データから字幕テキストの第1表示開始時刻を抽出する。
終了時刻設定部12は、字幕抽出部11により抽出された字幕テキストについて、第1表示終了時刻を設定する。第1表示終了時刻は、字幕抽出部11により抽出された第1表示開始時刻よりも後の時刻である。分割字幕生成部14は、字幕抽出部11が抽出した字幕テキストに、字幕抽出部11により抽出された第1表示開始時刻と、終了時刻設定部12により設定された第1表示終了時刻とを対応付けた分割字幕データを生成する。
開始時刻設定部13は、字幕抽出部11により抽出された字幕テキストについて、第2表示終了時刻を設定する。第2表示終了時刻は、終了時刻設定部12により設定された第1表示終了時刻と同時刻である。終了時刻設定部12は、字幕抽出部11により抽出された字幕テキストについて、第2表示終了時刻を設定する。第2表示終了時刻は、開始時刻設定部13により設定された第2表示開始時刻よりも後の時刻である。そして、分割字幕生成部14は、字幕抽出部11が抽出した字幕テキストに、開始時刻設定部13により設定された第2表示開始時刻と、終了時刻設定部12により設定された第2表示終了時刻とを対応付けた分割字幕データを生成する。
このようにして、分割字幕生成部14は、字幕抽出部11により抽出された字幕テキストの表示時間について、第1表示開始時刻から第1表示終了時刻までと、第2表示開始時刻から第2表示終了時刻までとに分割された分割字幕データを生成する。第1表示終了時刻と第2表示開始時刻とは同時刻である。したがって、字幕データは、字幕テキストの表示時間が途切れることがないようにして分割される。第2表示終了時刻以降も、同様にして、字幕テキストの表示時間が途切れることがないように分割が継続される。すなわち、1つ前の分割字幕データの表示終了時刻と、その直後の分割字幕データの表示開始時刻とは、同時刻である。
終了時刻設定部12は、第1表示開始時刻と第1表示終了時刻との時間間隔を、例えば、字幕生成装置10が備えるタイマー部16の計時結果に基づいて設定する。同様に、終了時刻設定部12は、第2表示開始時刻と第2表示終了時刻との時間間隔を、例えばタイマー部16の計時結果に基づいて設定する。終了時刻設定部12は、第1表示開始時刻から第1表示終了時刻までの間隔と、第2表示開始時刻から第2表示終了時刻までの間隔とが等しくなるように、第1表示終了時刻及び第2表示終了時刻を設定する。
この場合、それぞれの表示時間、すなわち、第1表示開始時刻から第1表示終了時刻までの間隔、及び第2表示開始時刻から第2表示終了時刻までの間隔は、例えば、字幕データが重畳される映像データのエンコード遅延、プレイヤーでの映像データのデコード遅延、及びプレイヤーでの映像データの描画遅延等を考慮して決定するとよい。このようにすることで、映像データと字幕データの表示タイミングを容易に合わせることが可能である。
データ出力部15は、分割字幕生成部14が生成した分割字幕データを出力する。すなわち、データ出力部15は、字幕テキストに第1表示開始時刻と第1表示終了時刻とが対応付けられた分割字幕データを出力する。また、データ出力部15は、字幕テキストに第2表示開始時刻と第2表示終了時刻とが対応付けられた分割字幕データを出力する。第2表示終了時刻以降についても同様に、分割字幕生成部14が生成した分割字幕データがあれば、データ出力部15は、当該分割字幕データを出力する。
この際の出力データのファイル形式は、例えばWebVTT(Web Video Text Track:ウェブ・ビデオ・テキスト・トラック)形式である。次に、図2を参照しながらWebVTT形式の字幕ファイルの構成について説明する。同図に示すのは、WebVTT形式の字幕ファイルの一例である。第1行目の「WEBVTT」は、ヘッダー情報であり、本ファイルがWEBVTT形式のファイルであることを表す。第2行目は空白行である。
第3行目のデータと第4行目のデータは組になっている。第3行目は、字幕テキストの表示開始時刻及び表示終了時刻である。第4行目は、第3行目の表示開始時刻から表示終了時刻までの間に表示される字幕テキストの内容である。具体的には、第3行目の「-->」よりも行頭側の「00:00:05.000」は、表示開始時刻が0時0分5秒000であることを示している。また、第3行目の「-->」よりも行末側の「00:00:10.000」は、表示終了時刻が0時0分10秒000であることを示している。なお、これらの時刻は相対的なものであり、例えば、当該字幕データが表示される映像の再生時刻を基準としている。そして、第4行目の「今日は晴れています。」は、0時0分5秒000から0時0分10秒000の間に表示する字幕テキストである。
同様に、第5行目の空白行を挟んで、第6行目及び第7行目が組となったデータである。第6行目及び第7行目は、表示開始時刻0時0分11秒000から表示終了時刻0時0分16秒000の間に字幕テキスト「明日の天気は曇りでしょう。」を表示することを示している。また、第8行目の空白行を挟んで、第9行目及び第10行目が組となったデータである。第9行目及び第10行目は、表示開始時刻0時0分20秒000から表示終了時刻0時1分20秒000の間に字幕テキスト「♪(主題歌)」を表示することを示している。そして、第11行目の空白行を挟んで、第12行目及び第13行目が組となったデータである。第12行目及び第13行目は、表示開始時刻0時1分22秒000から表示終了時刻0時1分25秒000の間に字幕テキスト「さて、次のニュースです。」を表示することを示している。
データ出力部15は、2つ以上の分割字幕データを1つの字幕ファイルとして出力してもよいし、2つ以上の分割字幕データのそれぞれを別々の字幕ファイルとして出力してもよい。2つ以上の分割字幕データを1つの字幕ファイルとして出力する場合、データ出力部15は、字幕テキストに第1表示開始時刻と第1表示終了時刻とを対応付けた分割字幕データと、字幕テキストに第2表示開始時刻と第2表示終了時刻とを対応付けた分割字幕データとが少なくとも含まれる1つの字幕ファイルを出力する。
図3に示すのは、データ出力部15が、2つ以上の分割字幕データを1つの字幕ファイルとして出力した場合の一例である。同図の例は、WebVTT形式の字幕ファイルの一部分である。この例では、まず、表示開始時刻0時0分11秒000から表示終了時刻0時0分16秒000の間に字幕テキスト「明日の天気は曇りでしょう。」を表示する。そして、図示の範囲では、字幕テキスト「♪(主題歌)」について、5秒毎に5つの分割字幕データに分割されている。
すなわち、まず、1つめの分割字幕データにおいて、表示開始時刻0時0分20秒000から表示終了時刻0時0分25秒000の間に字幕テキスト「♪(主題歌)」を表示する。次に、2つめの分割字幕データにおいては、表示開始時刻0時0分25秒000から表示終了時刻0時0分30秒000の間に、同一の字幕テキスト「♪(主題歌)」を表示する。また、3つめの分割字幕データにおいては、表示開始時刻0時0分30秒000から表示終了時刻0時0分35秒000の間に、同一の字幕テキスト「♪(主題歌)」を表示する。さらに、4つめの分割字幕データにおいては、表示開始時刻0時0分35秒000から表示終了時刻0時0分40秒000の間に、同一の字幕テキスト「♪(主題歌)」を表示する。そして、5つめの分割字幕データにおいては、表示開始時刻0時0分40秒000から表示終了時刻0時0分45秒000の間に、同一の字幕テキスト「♪(主題歌)」を表示する。なお、0時0分45秒000以降についても、同様に、表示時間5秒毎に分割字幕データが生成されている。
図4に示すのは、図3に示した1つのWebVTT形式の字幕ファイルを、複数のWebVTT形式の字幕ファイルに分割した一例である。この例では、HLS(HTTP Live Streaming:HTTP・ライブ・ストリーミング)規格により配信される動画に合わせて、字幕ファイルを分割している。EXT-INFは、HLSセグメントの長さを特定するタグである。図示の例では、EXT-INFは10秒である。このHLSセグメントの長さに合わせて、図3に示した1つのWebVTT形式の字幕ファイルを複数の字幕ファイルに分割している。図3の例では、1つの分割字幕データの表示時間は5秒である。そこで、HLSセグメントの長さ10秒に合わせて、2つの分割字幕データ毎に1つのWebVTT形式字幕ファイルとなるようにファイルを分割している。
具体的には、1つめの字幕ファイルは、表示開始時刻0時0分20秒000から表示終了時刻0時0分25秒000の間に字幕テキスト「♪(主題歌)」を表示する1つめの分割字幕データと、表示開始時刻0時0分25秒000から表示終了時刻0時0分30秒000の間に字幕テキスト「♪(主題歌)」を表示する2つめの分割字幕データとからなる。また、2つめの字幕ファイルは、表示開始時刻0時0分30秒000から表示終了時刻0時0分35秒000の間に字幕テキスト「♪(主題歌)」を表示する3つめの分割字幕データと、表示開始時刻0時0分35秒000から表示終了時刻0時0分40秒000の間に字幕テキスト「♪(主題歌)」を表示する4つめの分割字幕データとからなる。そして、3つめの字幕ファイルは、表示開始時刻0時0分40秒000から表示終了時刻0時0分45秒000の間に字幕テキスト「♪(主題歌)」を表示する5つめの分割字幕データと、表示開始時刻0時0分45秒000から表示終了時刻0時0分50秒000の間に字幕テキスト「♪(主題歌)」を表示する6つめの分割字幕データとからなる。
なお、図示の例では、それぞれの字幕ファイルは、連番を含むファイル名が付けられている。具体的には、それぞれ、webvtt_2.vtt、webvtt_3.vtt及びwebvtt_4.vttである。
図2に例示したように、WebVTT形式の字幕ファイルでは、字幕テキストについて表示開始時刻と表示終了時刻とが特定されている。ここで、表示開始時刻のみが特定され、表示終了時刻が特定されていない字幕テキストがWebVTT形式の字幕ファイルに含まれていた場合、一般的なプレイヤーでは、当該字幕テキストについて無視されてしまい、当該字幕テキストが表示されない。
ここで、字幕データが映像データと重畳され伝送されるケースにおいて、これらのデータを受信してリアルタイムで字幕データをWebVTT形式の字幕ファイルとして出力する場合を考える。このような場合、従来技術では、ある字幕データを受信した時点では、次の字幕データを受信していないために、字幕テキストの表示終了時間を確定できないことが起こり得る。したがって、字幕データの受信と同時にリアルタイムで生成したWebVTT形式の字幕ファイルにおいて、表示終了時刻が特定されていない字幕テキストが含まれることになり、当該字幕テキストを適切に表示できず、映像データと字幕データの同期がとれないおそれがある。
これに対し、以上のように構成された本開示に係る字幕生成装置10によれば、字幕データの受信時に表示終了時刻が確定できない字幕テキストについて、表示終了時刻を設定し、さらに、当該字幕テキストについて、設定した表示終了時刻以後も再度表示を開始して表示が継続されるような分割字幕データを生成する。このため、字幕データの受信時に表示終了時刻が確定できない字幕テキストについても、表示終了時刻が特定されたWebVTT形式の字幕ファイルとして出力できる。したがって、字幕データが映像データと重畳され伝送されるケースにおいて、これらのデータを受信してリアルタイムで字幕データをインターネット等の電気通信回線で配信するためのWebVTT形式の字幕ファイルとして出力する場合に、映像データと字幕データとを同期させて字幕テキストを適切に表示できるようにすることが可能である。
また、2つ以上の分割字幕データを1つの字幕ファイルとして出力しておくことで、その後の必要性等に応じて、容易に複数の字幕ファイルに分割できる。したがって、例えば、HLS形式のライブ配信の場合に映像データのHLSセグメント長に合わせて、字幕データのセグメントファイルを容易に生成できる。
次に、以上のように構成された字幕生成装置10の処理の流れの一例について、図5のフロー図を参照しながら説明する。まず、ステップS11においては、字幕抽出部11は、外部から字幕データを取得する。そして、字幕抽出部11は、取得した字幕データから、字幕テキストを抽出する。また、字幕抽出部11は、取得した字幕データから、字幕テキストの表示されるべき時間を抽出し、これを表示開始時刻とする。字幕テキストの表示されるべき時間とは、例えば、字幕データに含まれるPTS(Presentation Time Stamp)である。そして、字幕抽出部11が次の字幕データを取得した場合には、次の字幕データの表示開始時刻を、今回の字幕データの表示終了時刻とする。ステップS11の後、字幕生成装置10はステップS12の処理を行う。
ステップS12においては、字幕抽出部11は、取得した字幕データに制御コード「TIME」又は「CS」(画面消去)があるか否かを確認する。そして、字幕データに制御コード「TIME」及び「CS」のいずれもなければ、次に字幕生成装置10はステップS13の処理を行う。
ステップS13においては、タイマー部16による計時を開始する。なお、このステップS13の処理の実行時に、既にタイマー部16が計時を行っている場合には、一旦タイマー部16による計時を停止し、タイマー部16をリセットしてから、タイマー部16による計時を開始する。
ステップS13の後、字幕生成装置10は、ステップS11に戻って次の字幕データについて処理を続ける。また、この処理と並行して、終了時刻設定部12は、タイマー部16により計時された経過時間を監視している(ステップS14)。そして、終了時刻設定部12は、タイマー部16により計時された経過時間が設定時間に達した(Expired)か否かを判定する。
タイマー部16により計時された経過時間が設定時間に達した場合、終了時刻設定部12は、表示終了時刻を設定する。この際、タイマー部16により計時された経過時間が設定時間に達するまでの間に、次の字幕データが到着しない場合、字幕テキストを複製し、この複製した字幕テキストについて開始時刻設定部13は表示開始時刻を再設定する。そして、字幕生成装置10は、ステップS13に戻って処理を続け、タイマー部16による計時を開始する。
一方、ステップS14で、タイマー部16により計時された経過時間が設定時間に達するまでの間に、次の字幕データが到着した場合、その時点において、終了時刻設定部12は、表示終了時刻を設定する。そして、字幕生成装置10はステップS15の処理を行う。
ステップS15においては、分割字幕生成部14は、ステップS11で取得された字幕テキスト、表示開始時刻、並びに、ステップS13及びS14で設定された字幕テキスト、表示開始時刻及び表示終了時刻に基づいて、分割字幕データを生成する。そして、データ出力部15は、分割字幕生成部14が生成した分割字幕データを、字幕ファイルとして出力する。
一方、ステップS12において、字幕データに制御コード「TIME」がある場合、終了時刻設定部12は、制御コード「TIME」に従って字幕テキストの表示終了時刻を設定する。また、ステップS12において、字幕データに制御コード「CS」がある場合、終了時刻設定部12は、制御コード「CS」により画面が消去される時刻を字幕テキストの表示終了時刻として設定する。そして、次に字幕生成装置10はステップS15の処理を行う。ステップS15の処理が完了すれば、一連の処理は終了となる。
なお、図5に示した処理例では、字幕データの受信処理タイミングにより、出力が保留される字幕データが同時に複数存在する状態になることがある。この場合、出力が保留された字幕データについて、FIFO(先入先出)により処理することで、順序を維持することができる。
以上で説明した構成例では、タイマー部16による計時結果に基づいて、一定時間間隔で字幕テキストの表示終了時間を設定し、分割字幕データを生成している。すなわち、字幕テキストを取得した時点で、当該字幕テキストの表示終了時刻を確定できない場合にタイマー部16による計時を開始し、このタイマー部16が一定時間を計時したタイミングで、当該字幕テキストの表示終了時刻を設定している。しかし、分割字幕データの表示終了時間の設定方法は、これに限られない。
終了時刻設定部12は、外部から入力されたキュー信号に基づいて、分割字幕データの表示終了時間の設定してもよい。すなわち、終了時刻設定部12は、外部から入力されたキュー信号に基づいて、少なくとも、第1表示終了時刻及び第2表示終了時刻の一方又は両方を設定する。具体的に例えば、SCTE-35信号をキュー信号として用いる。SCTE-35信号は、番組の開始と終了、及び、広告の挿入開始と挿入終了を指定する信号である。なお、SCTEは、Society of Cable and Telecommunications Engineersの略である。
この際、例えば、SCTE-35信号のsplice_insert()メッセージに含まれるunique_program_idフィールドの値を番組IDとして利用することができる。この場合、例えば、unique_program_idフィールドの値すなわち番組IDに変更がなければ、同一の番組内での広告挿入であると判定して、終了時刻設定部12はSCTE-35信号のタイミングで字幕テキストの表示終了時間を設定し、分割字幕生成部14は分割字幕データを生成する。一方、unique_program_idフィールドの値すなわち番組IDが変更されれば、1つの番組が終了し、別の番組が開始されたと判定する。番組IDが変更された場合、データ出力部15による字幕ファイルの出力先(例えばディレクトリ及び字幕ファイル名)を番組に合わせて変更する。そして、データ出力部15が出力する分割字幕ファイルのカウンタをリセットする。このような処理により、番組単位に合わせて字幕ファイルを出力することができる。
この場合の字幕生成装置10の処理例について、図6のフロー図を参照しながら説明する。字幕生成装置10に、外部からのキュー信号としてSCTE-35信号が入力されると、まず、ステップS21において、字幕生成装置10は、SCTE-35信号のunique_program_idフィールドの値すなわち番組IDを取得する。
続くステップS22において、ステップS21で取得した番組IDと、前回のSCTE-35信号の受信時に取得した番組IDとを比較し、番組IDに変更があったか否かを判定する。なお、例えば、字幕生成装置10のメモリに、前回のSCTE-35信号の受信時に取得した番組IDの値が保持されている。そして、番組IDに変更がなければ、字幕生成装置10は次にステップS23の処理を行う。
ステップS23においては、例えば図5のフロー図に示した処理により、外部から字幕データを取得し、WebVTT形式の字幕ファイルを出力する。ステップS23の後、字幕生成装置10はステップS21に戻って処理を続ける。
一方、ステップS22で番組IDに変更があれば、字幕生成装置10は次にステップS24の処理を行う。ステップS24においては、データ出力部15による字幕ファイルの出力先ディレクトリ及び字幕ファイル名を番組に合わせて変更する。そして、データ出力部15が出力する分割字幕ファイルのカウンタをリセットする。ステップS24の後、字幕生成装置10はステップS21に戻って処理を続ける。
なお、以上においては、番組IDとしてSCTE-35信号のunique_program_idフィールドの値を使用した場合について説明したが、番組IDの特定方法はこれに限られない。他に例えば、SCTE-35信号のsplice_insert()メッセージに含まれるsplice_event_idフィールド等の他の識別子を番組IDとして利用してもよい。また、1つの識別子だけでなく複数の識別子を組み合わせたものにより番組を一意に特定して、番組IDとしてもよい。
字幕生成装置10は、HLSセグメントに合わせて分割字幕ファイルを出力できるようにしてもよい。すなわち、取得した字幕データに、HLSセグメントの長さを超えて表示される字幕テキストが含まれている場合、当該字幕テキストの表示時間を分割した分割字幕データを生成し、WebVTT形式の字幕ファイルを出力する。
この場合の字幕生成装置10の処理例について、図7のフロー図を参照しながら説明する。まず、ステップS31において、字幕抽出部11は、外部から字幕データを取得する。そして、字幕抽出部11は、取得した字幕データから、字幕テキスト及び当該字幕テキストの表示時間を抽出する。
続くステップS32において、字幕生成装置10は、ステップS31で取得した字幕データについて、HLSセグメント時間内に、表示開始する又は表示終了する字幕テキストが存在するか否かを判定する。この判定結果は、3つの場合が考えられる。第1の場合は、当該HLSセグメント時間内に表示される字幕テキストが存在しない場合である。第2の場合は、当該HLSセグメント時間内に表示開始され、かつ、表示終了される字幕テキストが存在する場合である。
そして、第3の場合は、当該HLSセグメント時間内に表示開始され、かつ、表示終了されない、すなわち、当該HLSセグメント時間を超えて表示し続ける字幕テキストが存在する場合である。この第3の場合には、当該HLSセグメント時間が経過しても、次の字幕データが字幕生成装置10に到着せず、字幕テキストの表示終了時間が確定できなかった場合も含まれる。
上記第1の場合、すなわち、当該HLSセグメント時間内に表示される字幕テキストが存在しない場合、字幕生成装置10は次にステップS33の処理を行う。ステップS33においてデータ出力部15は、内容が空のWebVTT形式字幕ファイルを出力する。ステップS33の後、字幕生成装置10はステップS31に戻って処理を続ける。
ステップS32で上記第2の場合、すなわち、当該HLSセグメント時間内に表示開始され、かつ、表示終了される字幕テキストが存在する場合、字幕生成装置10は次にステップS34の処理を行う。ステップS34においては、分割字幕生成部14は、ステップS31で取得した字幕テキスト及び表示時間により、字幕データを生成する。そして、データ出力部15は、生成された字幕データをWebVTT形式字幕ファイルとして出力する。なお、出力待ちの字幕ファイルが既に存在する場合には、データ出力部15は、当該出力待ちの字幕ファイルに字幕データを追記する形で出力する。ステップS34の後、字幕生成装置10はステップS35の処理を行う。
ステップS35においては、データ出力部15は、字幕用m3u8ファイルを生成する。字幕用m3u8ファイルは、字幕ファイルのプレイリストを定義するファイルである。なお、字幕用m3u8ファイルが既に存在する場合には、データ出力部15は、字幕用m3u8ファイルに今回出力した字幕ファイルを追記する。ステップS35の後、字幕生成装置10はステップS31に戻って処理を続ける。
一方、ステップS32で上記第3の場合、すなわち、当該HLSセグメント時間を超えて表示し続ける字幕テキストが存在する場合、字幕生成装置10は次にステップS36の処理を行う。ステップS36においては、まず、終了時刻設定部12は、当該HLSセグメントの終了時間を字幕テキストの表示終了時間に設定する。そして、分割字幕生成部14は、設定された表示終了時間により分割字幕データを生成する。また、開始時刻設定部13は、当該HLSセグメントの終了時間を字幕テキストの表示開始時間に設定する。そして、終了時刻設定部12は、例えば、次のHLSセグメントの終了時間を字幕テキストの表示終了時間に設定する。分割字幕生成部14は、設定された表示開始時間及び表示終了時間により分割字幕データを生成する。このようにして、字幕テキストが複製され、HLSセグメント時間に合わせて分割された分割字幕データが生成される。そして、ステップS36の後、字幕生成装置10はステップS34の処理を行う。
このようにすることで、分割されたWebVTT形式字幕ファイルは、HLSセグメントに合わせて表示時間が分割されている。したがって、途中のHLSセグメントから再生が開始された場合でも、適切に字幕の表示可能な字幕ファイルを生成できる。
なお、ステップS33におけるデータ出力部15による空のWebVTT形式字幕ファイルの出力は必ずしも行われなくともよい。より詳しくは、上記第1の場合、すなわち、当該HLSセグメント時間内に表示される字幕テキストが存在しない場合に空のWebVTT形式字幕ファイルを出力すべきか否かは、ステップS35において生成される字幕用m3u8ファイルの仕様により決まる。すなわち、上記第1の場合にステップS35で字幕用m3u8ファイルに空のWebVTT形式字幕ファイルが記載される場合には、ステップS33で空のWebVTT形式字幕ファイルを出力しなければならない。一方、上記第1の場合にステップS35で字幕用m3u8ファイルに空のWebVTT形式字幕ファイルが記載されないのであれば、ステップS33で空のWebVTT形式字幕ファイルを出力してもしなくてもよい。