iOS は、暗号化された .ts ファイルと EXT-X-DISCONTINUITY タグが混在する hls m3u8 ファイルを好まないようです。
これはテストプレイリストで、2 つのビデオをミックスしたものです。暗号化されていないプレロール広告とメインの暗号化されたビデオ。どちらも別々に再生するとうまく再生されますが、EXT-X-DISCONTINUITY で分離された単一の m3u8 にまとめると、プリロールのみが再生され、その後プレーヤーが停止します。
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/vig_400-0.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/vig_400-1.ts
#EXT-X-DISCONTINUITY
#EXTINF:10,
#EXT-X-KEY:METHOD=AES-128,URI="http://ixemes-ppweb.ixemes.com/prerollmain/113760.key"
http://ixemes-ppweb.ixemes.com/prerollmain/02-0.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-1.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-2.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-3.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-4.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-5.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-6.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-7.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-8.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-9.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-10.ts
#EXTINF:10,
http://ixemes-ppweb.ixemes.com/prerollmain/02-11.ts
#EXTINF:2,
http://ixemes-ppweb.ixemes.com/prerollmain/02-12.ts
#EXT-X-ENDLIST
暗号化されていない 2 つのビデオを試してみましたが、うまくいきました。そして、暗号化されたビデオで EXT-X-DISCONTINUITY タグを使用することは禁止されていると言う HLS 仕様には何もありません: https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-08 #section-6.3.3
したがって、間違っているのは独自の仕様のアップルの実装だと思いますが、おそらく私が間違っているのでしょう。
私はそれをテストするための簡単なhtmlページを作成しました(ios5デバイスのサファリで開きます):http://ixemes-ppweb.ixemes.com/prerollmain/index.html