Closed sadr0b0t closed 1 year ago
связанная история: https://github.com/sadr0b0t/yashlang/issues/134
На самом деле всё выливается в не вполне тривиальную логику.
Во-первых, для фонового проигрывания требуется изменить приоритет выбора потоков - во-первых, для выбора потока по умолчанию, во-вторых, для тех случаев, когда поток по умолчанию загрузить не получилось, чтобы иметь возможность попробовать загрузить следующий по списку.
Для фонового проигрывания по возможности выбираем поток аудио, стараемся экономить трафик на видео, которое всё равно не видно. Логика такая:
Дальше приоритеты:
Далее, логика переключения в фон - по возможности и при необходимости переключить на дорожку аудио:
При переключении из фона на экран:
готово здесь https://github.com/sadr0b0t/yashlang/commit/6d803b8a689b173646b0efd8e2bc7f6cd268aee5 автовыбор последовательности потоков в случае ошибки загрузки потоков, предлагаемых по умолчанию, тлком не тестил. будут ошибки - можно будет создать новые тикеты
Если переключаться несколько раз между экраном плеера и фоном, при этом держать ролик на паузе (можно и не держать на паузе, но так будет нагляднее), с каждым переключением ролик будет возвращаться на 5 секунд назад. Может показаться багом, но это ожидаемое поведение, т.к. ролик возвращается назад на 5 секунд при каждом переключении потока.
Если у ролика поток видео+аудио оффлайн, то возвращаться назад не будет
фикс вылета при переходе в фоновый режим до того, когда для текущего ролика загрузился список потоков: https://github.com/sadr0b0t/yashlang/commit/c4f96d9404b6372b95b91b60595c6cb1473f4ccd
Фоновый режим аудио-плеера реализован https://github.com/sadr0b0t/yashlang/issues/7
Но там сейчас в фоне всё равно качает видео. Ради экономии трафика и ресурсов в этой ситуации следует качать только аудио дорожку. Сделаю здесь в отдельном тикете.
Для роликов, у которых нет отдельно аудио дорожки, придется всё равно качать видео+аудио. Но, к примеру, в этом случае можно выбирать видео наихудшего качества или (в приоритете) скачанный поток видео+аудио.