Странное поведение AVPlayer с избыточными потоками HLS и плохой сетью - PullRequest
0 голосов
/ 28 июня 2019

У меня есть приложение, которое может воспроизводить видео 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!!!!!!!!!!!!!!

И я не могу найти много информации об этом

1 Ответ

0 голосов
/ 07 июля 2019

Неправильно установлено значение BANDWIDTH, AVPlayer имеет некоторую непонятную логику с переключением избыточных потоков, если текущее свойство не соответствует значениям m3u8

...