私のワークフローは次のとおりです。
- ffmpeg を使用して、RTMP ストリームを WOWZA App1 に送信します。
- App1 はストリームを内部の 2 番目のアプリ (App2) に送信します。
- App2 はトランスコードして hls にパケット化し、Cloudfront ディストリビューションのオリジンです。
- Cloudfront はストリームをユーザーに提供します。
- ユーザーのプレーヤーは HLS.js に基づいています。
さまざまなシナリオに備えるために、テスト送信中に App2 を強制的に再起動しました。この場合、App1 はまだ ffmpeg からストリームを受信しており、それを App2 に送信しようとしています。app2 の準備が整った後、このリンクが再び確立され、App1 はストリームを App2 に送信し続けます。 、しかし、クライアント側にはビデオがありません。
- 再起動する前に
chunklist.m3u8
、17 番目までの多くのチャンクを一覧表示します。media-u3510ez40_17.ts
- 次に、App2 が再起動している間、chunklist.m3u8 が存在せず、cloudfront が 404 エラーを送信します。
- そして、App2 が戻ってくると、chunklist.m3u8 は新しい ID を持つ 1 から始まるチャンクの新しいリストを一覧表示します。
media-u1ofkjj9w_1.ts
問題は、ビデオがなく、ネットワーク トラフィックがブラウザが新しくリストされたチャンクをダウンロードしないことです。
新しいチャンクを追加し続けます chunklist.m3u8
が、ブラウザはこれをダウンロードしません... 18番目のチャンクが表示されるまで...そしてビデオが再開します.
私は何度も試してみましたが、問題は同じです。再起動する前に最後のチャンクに数字N
があり、再起動後にチャンクに到達するまでビデオはありませんN+1
が、ID は異なります。
この問題が Wowza にあるのか、Cloudfront にあるのか、HLS.js プレーヤーにあるのかはわかりません :/
chunklist.m3u8
再起動前:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:9
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:8.333,
media-u3510ez40_1.ts
#EXTINF:8.333,
media-u3510ez40_2.ts
#EXTINF:8.334,
.
.
.
media-u3510ez40_16.ts
#EXTINF:8.333,
media-u3510ez40_17.ts
chunklist.m3u8
再起動後:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:17
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:16.396,
media-u1ofkjj9w_1.ts
#EXTINF:8.333,
media-u1ofkjj9w_2.ts
.
.
.
media-u1ofkjj9w_16.ts
#EXTINF:8.333,
media-u1ofkjj9w_17.ts
#EXTINF:8.333,
media-u1ofkjj9w_18.ts