sadr0b0t / yashlang

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

Некоторые ролики с ютюба не играют поток видео #184

Closed sadr0b0t closed 1 year ago

sadr0b0t commented 1 year ago

Ролики с моего кананала если выбираю "предпочитать качество 480p", начинают играть поток аудио, а видео не показывают - вместо него растянутая иконка-превью.

Проявляется для ситуаций, когда потоки видео и аудио отдельно. Если выбрать поток видео+аудио, то всё ок. Качество 720p тоже ок даже если поток видео отделен от аудио.

Скорее всего срабатывает что-то из этого алгоритма: https://github.com/sadr0b0t/yashlang/issues/134

Но если не загрузилось видео, то нужно показывать режим "только аудио" (иконка "нота" в месте выбора потока)

sadr0b0t commented 1 year ago

Да, поломалось еще до рефактора https://github.com/sadr0b0t/yashlang/issues/7

ролик например этот https://www.youtube.com/watch?v=miVsejHgubo

sadr0b0t commented 1 year ago

В общем, проблема в том, что объект-поток появляется в списке, но поле url в нем null. А режим "только аудио" включается только если сам объект-поток не выбран для ролика. Возможно, проблема в NewPipeExtractor.

playVideoStream(
        (videoItem.getPlaybackStreams().getVideoStream() != null ? videoItem.getPlaybackStreams().getVideoStream().getUrl() : null),
        (videoItem.getPlaybackStreams().getAudioStream() != null ? videoItem.getPlaybackStreams().getAudioStream().getUrl() : null),
        videoItem.getPausedAt(),
        pauseOnLoad);

В любом случае в коде следует учесть эту ситуацию и наличие объекта-потока при отсутствии url рассматривать как ошибку загрузки, чтобы плеер попробовать автоматически переключиться на другой поток, у которого найдется url.

sadr0b0t commented 1 year ago

вариант: не показывать такой поток в списке доступных изначально

sadr0b0t commented 1 year ago

исправлено с этим тикетом https://github.com/sadr0b0t/yashlang/issues/191 https://github.com/sadr0b0t/yashlang/commit/7e676be09ce9fc02be2068eb44a523d48f491ecf