Swift AVPlayer для прямой трансляции IPTV

#swift #avplayer #http-live-streaming #playlist #m3u

Вопрос:

Возможно, это простой вопрос. Я пытаюсь использовать AVPlayer для прямой трансляции IPTV. Используйте удаленный сервер с файлом iptv.m3u. Инициализируйте плеер с помощью простого кода:

 class VideoItem: ObservableObject {
    
    @Published var player: AVPlayer = AVPlayer()
    @Published var playerItem: AVPlayerItem?

    let myURL = URL(string: "http://iptv.myserver.net/iptv.m3u")! //not real url
    let asset = AVURLAsset(url: url)
    let playerItem = AVPlayerItem(asset: asset)
    self.playerItem = playerItem
    player.replaceCurrentItem(with: playerItem)
    player.play()
}
 

удаленный файл iptv.m3u содержит некоторый код:

 #EXTM3U url-tvg="http://iptv.myserver.net/epg.xml" m3uautoload="1" deinterlace="7" aspect-ratio="none" cache="2000" tvg-shift="0"

#EXTINF:0 tvg-id="9929" tvg-name="9929" audio-track="en" group-title="World News" id="vsetv_9929" tvg_logo="http://iptv.myserver.net/myiptv/icons/9929.png", Channel 1
http://iptv.myserver.net:8081/Channel1
#EXTINF:0 tvg-id="9930" tvg-name="9930" audio-track="en" group-title="World News" id="vsetv_9930" tvg_logo="http://iptv.myserver.net/myiptv/icons/9930.png", Channel 2
http://iptv.myserver.net:8081/Channel2
#EXTINF:0 tvg-id="9932" tvg-name="9932" audio-track="en" group-title="World News" id="vsetv_9932" tvg_logo="http://iptv.myserver.net/myiptv/icons/9932.png", Channel 3
http://iptv.myserver.net:8081/Channel3
...
...
#EXTINF:0 tvg-id="3542" tvg-name="3542" audio-track="en" group-title="Cartoons" id="vsetv_3542" tvg_logo="http://iptv.myserver.net/myiptv/icons/3542.png", Channel 254
http://iptv.myserver.net:8081/Channel254
 

и это хорошо работает, но я вижу только «Канал 1»!
Я asset, playerItem, player знаю, но не понимаю, как создать список каналов (плейлист) и выбрать канал из этого списка для воспроизведения.
Пожалуйста, помогите!