iOS 5 および 6 で Apple の AVPlayer ライブラリを使用して、iOS デバイス ファミリで HTTP ライブ ストリーミングを再生しています。
コンテンツ クリップの間のミッドロールで広告を再生しているので、前の質問への回答を手伝ってくれた素晴らしい人が提案したように、#EXT-X-DISCONTINUITY タグを使用しています。
これは単一のビットレートで機能していますが、複数のビットレートの子プレイリストを持つバリアント プレイリストを使用する場合にのみ問題が発生します。最初の不連続タグの後でのみ音声付きの黒い画面が表示され、広告が終了した後も元に戻りません。(私は広告を聞くことができます)。
これは、iPhone 4、4S、5、および iPod Touch 第 4 世代でテストおよび再現されています。iPhone 4 は iOS 5 上にあり、残りは iOS 6 です。ほとんどの場合に発生しますが、毎回ではありません。ただし、これはバリアント プレイリストに複数のビットレートの子プレイリストが含まれている場合にのみ発生することを強調したいと思います。
以下は、私が使用するプレイリストの例です (これは 400kbps バージョンです。200 および 800kbps バージョンがあり、対応するプレイリストは次のようになりますが、すべての「400」を「200」および「800」に置き換えます)。実際のプレイリストはもっと長くなりますが、これは一例です)。
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10,
400-clipA-0.ts
#EXTINF:10,
400-clipA-1.ts
#EXTINF:5,
400-clipA-2.ts
#EXT-X-DISCONTINUITY
#EXTINF:10,
400-advert0.ts
#EXTINF:3,
400-advert1.ts
#EXT-X-DISCONTINUITY
#EXTINF:10,
400-clipB-0.ts
#EXTINF:10,
400-clipB-1.ts
#EXTINF:5,
400-clipB-2.ts
#EXT-X-ENDLIST
そして、子プレイリストを選択するバリアント プレイリストがあります。
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=240000
clips-200.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=440000
clips-400.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=840000
clips-800.m3u8
何が起こるか (約 75% の確率で)、これを再生すると、最初の不連続タグ (広告の直前) の後でビデオが黒くなり、二度と元に戻らないことに注意してください。広告。たとえば、1 つのビットレート バリアントのみでバリアント プレイリストを作成した場合:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=280000
clips-200.m3u8
その後、私はこの問題をまったく取得しません!非常に奇妙な。さらに、すべての不連続タグを削除し、バリアント プレイリスト内の他のビットレートを維持すると、正常に動作しますが (通常は)、何らかの理由で .ts ファイル全体をスキップすることがあります。おそらく、これらの不連続タグが必要なためです。
さらに、Amazon Cloudfront でファイルを直接再生すると、元の場所である Amazon S3 バケットからファイルを再生する場合よりも頻繁に発生します。
役立つその他の情報: 私の元のファイル (クリップと広告) はすべて、iPhone 4 から取得した .mov ファイルであり、それぞれの解像度は同じです。私の出力 (.ts ファイル) はすべてこれらから生成されました。ビットレート クラスごとに、クリップと広告全体で同じエンコード設定を使用しています。それ以外の場合、出力はすべて同じ解像度とフレームレートです。
最後に、Apple が提供する mediasegmentvalidator を使用して確認しても、警告は表示されません。
皆さんが提供できる助けに本当に感謝しています!これは私にとって不可解な問題です:-(