У меня есть приложение, которое может воспроизводить видео HLS потоков.Главный список воспроизведения HLS содержит избыточные потоки для предоставления услуги резервного копирования
Похоже на это:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1500000,RESOLUTION=638x480
https://example.com/playlist.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=1
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=2
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1564000,RESOLUTION=638x480
https://example.com/playlist.m3u8?redundant=3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8?redundant=1
....
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,RESOLUTION=638x480
https://example.com/playlist_lq.m3u8?redundant=5
Итак, я решил проверить, как эта установка будет работать в случае плохого сетевого сценария.Для этого я использовал предустановку 3G сетевого кондиционера, обеспечивающую пропускную способность загрузки 750 КБ.Естественно, я ожидал относительно плавного воспроизведения видео размером 400 КБ, но, увы, полная загрузка тестового клипа (общий размер 800 КБ) заняла 60 секунд.
Что я заметил, так это то, что AVPlayer отправляет запросы на все перечисленные избыточные списки воспроизведения (и у меня есть5 для каждой полосы пропускания).Если я удаляю их и сохраняю только 1 список воспроизведения мультимедиа на полосу пропускания - видео загружается за 10 секунд и воспроизводится без сбоев.
Похоже, AVPlayer пытается обрабатывать все избыточные ссылки параллельно с основной загрузкой видео и сильно удушает.
Есть ли способ ограничить такое поведение AVPlayer и заставить его использовать избыточные потоки только в случае фактической ошибки загрузки?Есть идеи, почему он пытается загрузить их все?Может быть, некоторые теги HLS могут помочь?
Также иногда в консоли отображаются такие ошибки:
{OptimizedCabacDecoder::UpdateBitStreamPtr} bitstream parsing error!!!!!!!!!!!!!!
И я не могу найти много информации об этом