sadr0b0t / yashlang

PeerTube and YouTube player for Android with local playlists and whitelisted recommendations
GNU General Public License v3.0
50 stars 3 forks source link

Выбирать только дорожку аудио (без видео) при игре в фоне #178

Closed sadr0b0t closed 1 year ago

sadr0b0t commented 1 year ago

Фоновый режим аудио-плеера реализован https://github.com/sadr0b0t/yashlang/issues/7

Но там сейчас в фоне всё равно качает видео. Ради экономии трафика и ресурсов в этой ситуации следует качать только аудио дорожку. Сделаю здесь в отдельном тикете.

Для роликов, у которых нет отдельно аудио дорожки, придется всё равно качать видео+аудио. Но, к примеру, в этом случае можно выбирать видео наихудшего качества или (в приоритете) скачанный поток видео+аудио.

sadr0b0t commented 1 year ago

связанная история: https://github.com/sadr0b0t/yashlang/issues/134

sadr0b0t commented 1 year ago

На самом деле всё выливается в не вполне тривиальную логику.

Во-первых, для фонового проигрывания требуется изменить приоритет выбора потоков - во-первых, для выбора потока по умолчанию, во-вторых, для тех случаев, когда поток по умолчанию загрузить не получилось, чтобы иметь возможность попробовать загрузить следующий по списку.

Для фонового проигрывания по возможности выбираем поток аудио, стараемся экономить трафик на видео, которое всё равно не видно. Логика такая:

Дальше приоритеты:

Далее, логика переключения в фон - по возможности и при необходимости переключить на дорожку аудио:

При переключении из фона на экран:

sadr0b0t commented 1 year ago

готово здесь https://github.com/sadr0b0t/yashlang/commit/6d803b8a689b173646b0efd8e2bc7f6cd268aee5 автовыбор последовательности потоков в случае ошибки загрузки потоков, предлагаемых по умолчанию, тлком не тестил. будут ошибки - можно будет создать новые тикеты

sadr0b0t commented 1 year ago

Если переключаться несколько раз между экраном плеера и фоном, при этом держать ролик на паузе (можно и не держать на паузе, но так будет нагляднее), с каждым переключением ролик будет возвращаться на 5 секунд назад. Может показаться багом, но это ожидаемое поведение, т.к. ролик возвращается назад на 5 секунд при каждом переключении потока.

Если у ролика поток видео+аудио оффлайн, то возвращаться назад не будет

sadr0b0t commented 1 year ago

фикс вылета при переходе в фоновый режим до того, когда для текущего ролика загрузился список потоков: https://github.com/sadr0b0t/yashlang/commit/c4f96d9404b6372b95b91b60595c6cb1473f4ccd