AVPlayer (Swift) を使用して HLS ストリームを再生したい。
この HLS ストリームは Safari で再生されますが、AVPlayer を使用したいときは再生されません。
私のコード:
let hlsLink = 'http://thelinktomyHLSmovie'
let player = AVPlayer(URL: NSURL(string: hlsLink)!)
let playerVC = AVPlayerViewController()
playerVC.player = player
presentViewController(playerVC, animated: true) {
playerVC.player?.play()
}
HLS URL に CURL を実行して、そこに含まれるストリームの種類を調べると、次のようになります。
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2328000,CODECS="avc1.66.30,mp4a.40.2",RESOLUTION=1280x720
chunklist_w1751887550_b2328000.m3u8?smil=1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=128000,CODECS="mp4a.40.2"
chunklist_w1751887550_b128000_ao.m3u8?smil=1
これは私には問題ないようです。
小さくて短い他のストリームで同じことを行うと、すべて正常に動作します。
私はすでに AVPlayer と AVPlayerItem の状態を観察しようとしましたが、有用なものは報告されませんでした。
私は何が欠けていますか?
アップデート:
すでに述べたように、AVPlayerItem を追加しました。また、通知オブザーバーをプレーヤー、プレーヤー ビュー コントローラー、およびすべての通知のプレーヤー アイテムに追加しprint
、出力を編集しました。これにより、次のことがわかりました。
Optional(NSConcreteNotification 0x7fd272bcd600 {name = AVPlayerItemTimebaseChangedNotification; object = <AVPlayerItem: 0x7fd2714f6c40, asset = <AVURLAsset: 0x7fd27144e720, URL = http://hls.streamonecloud.net/vod/amlst:pwlsaeYN1ZuH/playlist.m3u8?smil=1>>})
Optional(NSConcreteNotification 0x7fd272bccaf0 {name = AVPlayerItemBecameCurrentNotification; object = <AVPlayerItem: 0x7fd2714f6c40, asset = <AVURLAsset: 0x7fd27144e720, URL = http://hls.streamonecloud.net/vod/amlst:pwlsaeYN1ZuH/playlist.m3u8?smil=1>>})
Optional(NSConcreteNotification 0x7fd272bcd710 {name = AVPlayerCurrentItemDidChangeNotification; object = <AVPlayer: 0x7fd27157ca60>; userInfo = {
CurrentDuration = {
epoch = 0;
flags = 17;
timescale = 0;
value = 0;
};
ReasonForCurrentItemDidChange = ReasonAdvanceAtEnd;
}})
Optional(NSConcreteNotification 0x7fd271759950 {name = AVPlayerItemTimebaseChangedNotification; object = <AVPlayerItem: 0x7fd2714f6c40, asset = <AVURLAsset: 0x7fd27144e720, URL = http://hls.streamonecloud.net/vod/amlst:pwlsaeYN1ZuH/playlist.m3u8?smil=1>>})
商品のaccessLog()
中身も調べました。errorLog()
アクセス ログにはエントリがなく (ただし存在します)、エラー ログはありません。
もうどうしたらいいのかわからない。上記のログには、興味があればロードしたい URL が含まれています (サーバーの 1 つにある Big Buck Bunny のみ)。