sadr0b0t / yashlang

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

Выбирать поток видео и аудио в отдельном диалоге #131

Closed sadr0b0t closed 2 years ago

sadr0b0t commented 2 years ago

Продолжение истории отсюда: https://github.com/sadr0b0t/yashlang/issues/15

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

Вот здесь такой диалог реализован для выбора потоков для закачки: https://github.com/sadr0b0t/yashlang/issues/8#issuecomment-1177218370

Можно использовать такой же для выбора потоков для проигрывания.

В списках доступных потоков присутствует опция NONE/НЕТ и отключать её не планирую, т.к., например, для потоков видео+аудио отдельный поток аудио не следует выбирать. А еще автоматически появится возможность выбрать один поток аудио без видео. Это может быть просто удобно уже в текущем видео и это будет совсем близко к реализации режима аудио-плеера https://github.com/sadr0b0t/yashlang/issues/7

Т.о. появление этого диалога сразу ставить вопрос проигрывания аудио без видео (это нужно реализовать здесь же или сделать новый тикет). Для этого нужно:

sadr0b0t commented 2 years ago
sadr0b0t commented 2 years ago

https://github.com/sadr0b0t/yashlang/commit/2ae91be502930473667cefea187173b3520cc227

sadr0b0t commented 2 years ago

-- режим аудио-плеера: звук есть, изображения нет (вместо изображения - сейчас пустая панель, должно быть - стандартное превью ролика или стандартная заглушка превью - осталось сделать отдельным коммитом)

реализовано: https://github.com/sadr0b0t/yashlang/commit/7ac5b94c34bbcb724fd429951f836c2250030671

sadr0b0t commented 2 years ago

Не забыть: убедиться, что если выбран поток "видео+аудио" и еще специально выбран поток "аудио", плеер должен играть отдельную дорожку аудио, т.к. такой выбор говорит о том, что мы хотим заменить оригинальную дорожку на выбранную (для проигрывания встроенной дорожки можно указать "НЕТ" в выпадающем списке для аудио)

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

По косвенным признакам играет встроенная дорожка, а не внешняя. В этом тикете https://github.com/sadr0b0t/yashlang/issues/126 если играть ролик отдельно видео и отдельно аудио, то ролик фризится через некороторое количество секунд. Если внешнюю дорожку отключить, то фриза не происходит. Так вот, если выбрать поток видео видео+аудио и вместе с ним внешний поток аудио, то ролик все равно не фризит, т.е., судя по всему, в этой комбинации внешний поток аудио игнорируется, а играет - встроенный. Но это не точно пока.

sadr0b0t commented 2 years ago

https://github.com/sadr0b0t/yashlang/commit/f9791b00993bd1e187a27902c42270ee3b440291

Дополнение к https://github.com/sadr0b0t/yashlang/issues/131#issuecomment-1182549587