1

プレイリスト master.m3u8、video.m3u8、metadata.m3u8 を使用して、hls.js プレーヤーでライブ ストリームを再生できます。ビデオは ffmpeg hls コマンドを使用して作成され、次の引数を持つローリング ライブ ウィンドウを使用しています。

-hls_list_size 20 -hls_time 2 -hls_flags delete_segments

これにより、video0.ts から video19.ts までのビデオ フラグメントが作成され、最初のフラグメントの削除が開始され、新しいフラグメントが追加されます。video.m3u8 は最終的に次のようになります...

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:25
#EXTINF:2.002133,
video25.ts
#EXTINF:2.002133,
video26.ts
...

私の metadata.m3u8 プレイリストは似ていますが、別のソースから作成しています。ビデオとメタデータのプレイリストは同期されており、ライブの開始から問題なく再生されます。

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:25
#EXTINF:2.000
sub_25.vtt
#EXTINF:2.000
sub_26.vtt
...

プレーヤーページをリロードすると問題が発生します。リロードすると、プレーヤーはプレイリストをロードし、現在のライブ ポイントで正しく再生されます。

video45.ts と sub_45.vtt の周りにフラグメントがロードされているのがわかります。これは、video.m3u8 のメディア シーケンスが 25 であるため、一見正しいようです。20 フラグメントのプレイリスト サイズを追加すると、ライブ位置は 45 番目のフラグメント付近になります。ライブ開始から約90秒。

ただし、プレーヤーのメディア時間は 40 秒を示しています。実際のライブ時間は 90 秒ですが、プレイリスト内のフラグメントの数を使用して 40 秒しか表示されないようです。

最終的に生じる問題は、40 秒のメディア時間がテキスト トラック キューを参照するために使用され、キャプションが 40 秒間表示されていることです.90 秒ではなく、ビデオが実際にどこから来たのかを示しています。

ライブのローリング ウィンドウにもかかわらず、プレーヤーに「リアルタイム」を正しく反映させる方法はありますか?

または、ローリング ウィンドウのライブ再生は、vtt の字幕では機能しませんか?

ローリング ウィンドウ サポートを無効にすると、ライブを何度もリロードでき、「完全な」ライブ タイムがロードされ、キャプションが正常に整列します。

4

0 に答える 0