概要
Web ビデオテキストトラック (WebVTT) ファイルは、キャプション、字幕、説明などを動画内の時間セグメントに関連付けるために使用される単純なテキストファイルです。
WEBVTT
00:00:03.50 --> 00:00:05.000 align:middle line:84%
In this video, you'll learn
about how Video Cloud Studio is
WebVTT ファイルの追加について詳しくは、ビデオへのキャプションの追加ドキュメントを参照してください。
メタデータヘッダーを追加する
HLS 仕様の一部として、オーディオとビデオのタイムスタンプを字幕と同期させるために、各 WebVTT X-TIMESTAMP-MAP
ヘッダーにメタデータヘッダーを追加する必要があります。
このヘッダーがない場合、MPEGTS
または値が正しくない場合は、字幕が動画と同期していない可能性があります。これは、X-TIMESTAMP-MAP
ヘッダーが見つからない場合、クライアントはデフォルトのタイムスタンプオフセットを 0 と仮定するためです。たとえば、 900000 と 0 の値を使用した場合の違いにより、キャプションが 10 秒オフになる可能性があります。
X-TIMESTAMP-MAP
フォーマット:
X-TIMESTAMP-MAP=MPEGTS:<MPEG-2 time>,LOCAL:<cue time>
WebVTT ファイルのサンプルを次に示します。
WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000
1
00:00:03.500 --> 00:00:05.000 align:middle line:84%
In this video, you'll learn
about how Video Cloud Studio is
詳細については、Apple の HLS プロトコルドキュメントの「字幕セグメント」セクションを参照してください。
オフセット値を決定する
Brightcoveのダイナミックインジェストまたは Zencoder を使用してコンテンツをトランスコードする場合は、オフセット値を使用しますMPEGTS:900000
。
Zencoder 以外のエンコーディングシステムを使用している場合は、必要な値を取得することをお勧めします。Apple では、エンコードされたビデオに合わせてオフセットを設定することをお勧めします。
MPEGTS
この値は、LOCAL
指定された時間における MPEG フレームのプレゼンテーションタイムスタンプ (PTS) の値に対応します。Brightcoveのレガシーインジェストシステムを使用している場合は、の値を使用できますMPEGTS:0
。
アカウントが有効になっている場合動的配信、そしてあなたは私たちと一緒にキャプションをホストしています (非リモートキャプション)、次にすべてを自動的に魔法のように機能させます(PTSはゼロである必要があり、確実にゼロにする必要があります)。
アカウントで動的配信が有効になっていて、を使用している場合リモートキャプションの場合、PTS値をゼロに設定する必要があります。
たとえば、オフセット値を取得するには、次のようにします。
リクエスト 1:
ターミナルで、HLS ビデオを取得し、ローカルファイルに保存します。この場合、seg.ts
私たちはそれを命名しています。
curl -o seg.ts "http://brightcove.vo.llnwd.net/v1/unsecured/media/4360108595001/201507/1154/4360341622001/4360108595001_4360341622001_s-1.ts?pubId=4360108595001&videoId=4360283683001"
リクエスト 2:
次に、ffprobe
コマンドを使用して、オフセット値を取得します。ffprobe
は、 FFmpeg フレームワークの一部であるマルチメディアストリームアナライザです。これをコンピュータにダウンロードしてインストールする必要があります。
ffprobe -show_frames seg.ts
応答:
回答は次のようになります。
pkt_pts=900000
pkt_pts_time=10.000000
pkt_dts=900000
pkt_dts_time=10.000000
ベストプラクティス
以下のガイドラインは、キャプション付きのアプリを開発する際に役立ちます。
キャプション期間
キャプションのデュレーションは、動画の再生時間を超えないようにすることをお勧めします。これにより、ビデオの再生が完了した後、キャプションを表示したり、プログレスバーに表示できない領域が表示されなくなります。