AVPlayer запускается с начала, когда обновляется прямая трансляция - PullRequest
0 голосов
/ 23 июня 2019

Мой бэкэнд предоставляет прямой эфир (m3u8) и добавляет к нему чанки пару раз.

Как выглядит список воспроизведения на бэкэнд-стороне:

с 1-й секунды:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:38
#EXTINF:37.995,
https://example.com/0.mp3

с 5-й секунды:

...
#EXTINF:30.531,
https://example.com/1.mp3

с 10-й секунды:

...
#EXTINF:41.811,
https://example.com/2.mp3
#EXT-X-ENDLIST

Длительность TARGETDURATION также изменяется в конце.

Этот подход работает в Safari абсолютно нормально. Для других браузеров я использую библиотеку hls.js, и она также хорошо работает.

Но в приложении для iOS AVPlayer начинает воспроизводить поток с начала после первого фрагмента.

Это выглядит так:

  • 01s : получает список воспроизведения с одним фрагментом и начинает воспроизведение 0.mp3,
  • 38s : получает полный список воспроизведения, буферизацию и снова начинает воспроизведение 0.mp3.

Safari и другие браузеры просто продолжают играть, когда они получают обновление. И я хочу, чтобы такое же поведение было в приложении для iOS.

Если список воспроизведения заканчивается, AVPlayer воспроизводит его правильно. Но в моем случае предоставление полного списка воспроизведения сразу без обновлений занимает слишком много времени.

...