ExoPlayer множество DASH URL адреси с различни разделителни способности като песни

Работя с приложение, което трябва да възпроизвежда видеоклипове в YouTube с помощта на ExoPlayer2. За да извлека DASH URL адреса на видеоклипа, използвам тази библиотека. Проблемът с този подход е, че библиотеката връща различни URL адреси в зависимост от това каква резолюция (itag) искате. Например, ако искате 720p вариант на видео, ще направите нещо като:

String youtubeLink = "http://youtube.com/watch?v=xxxx";

new YouTubeExtractor(this) {
    @Override
    public void onExtractionComplete(SparseArray<YtFile> ytFiles, VideoMeta vMeta) {
        if (ytFiles != null) {
            int itag = 22;    //22 == 720p
        String downloadUrl = ytFiles.get(itag).getUrl();
        }
    }
}.extract(youtubeLink, true, true);

Мога да направя този URL като MediaSource и да го задам с помощта на setMediaSource и той работи, но само с една резолюция (720p в този случай). Искам да направя нещо като снимката, приложена към отговора на този въпрос.

Опитах да прочета документите, опитах Google-Fu, но всичко беше напразно. Някакви идеи как мога да създам различни песни с различни разделителни способности за едно и също видео? Опитах да сложа MediaItems и да ги настроя на плейъра, но вместо това той създава плейлист, а не песни. Някаква помощ?

Съжалявам за липсата на код, предишният разработчик е направил пълна бъркотия в организирането на кода и не знам какво е къде. Ако мога просто да получа груб код, това би било адски полезно.

Благодаря


person Mihir Kandoi    schedule 02.05.2021    source източник


Отговори (1)


YouTube предпочита да използвате техен собствен плейър и предоставя SDK и API за това:

Ако изградите решение, което ще извлича потоците и ще ги възпроизвежда във вашия персонализиран плейър и има много примери в SO за това, ще бъдете оставени на милостта на нещо, което се променя, което може да наруши внедряването ви без предупреждение - погледнете истории на коментари в някои от примерите.

Освен това рискувате алгоритмите за преглед на приложения за Android да имат проверка за това и приложението ви внезапно да не отговаря на насоките и да бъде отхвърлено – приемането в миналото всъщност не е гаранция, че ще бъде отново в бъдеще.

Селекторът на песни на ExoPlayer очаква, че вашият изходен манифест ще има множество песни и неговата работа е да избира между тях. Във вашия случай нямате това, така че ще трябва или да изградите някакъв вид прокси, за да създадете нов манифест, комбиниращ отделните URL адреси, които получавате чрез заявка за всяка резолюция, както показвате по-горе, или да промените плейъра, за да поиска напълно нов манифест с единствената резолюция, която желаете.

person Mick    schedule 04.05.2021