Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Isingeniso sifutshane: Ndifuna ukuthetha ngomdlali we-intanethi we-YouTube we-Android kunye noluhlu lokudlala lwasekhaya, amajelo kunye neengcebiso.

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Intshayelelo eyandisiweyo:
Ngexesha elidlulileyo ndadibana ngqo nengxaki efanayo nombhali wesicelo esimangalisayo Channel Whitelist, kwaye ndizimisele ngokwam isimo sengqondo esifanayo malunga nayo: Ndifuna ukukwazi ukunika umntwana wam ithebhulethi okanye i-smartphone kunye neekhathuni ngamaxesha, kodwa andonwabi kwaphela apho, emva kokuchofoza 2-3, uluhlu. yeengcebiso kwizicelo eziqhelekileyo - abaxhasi beYouTube - bathatha umntwana.

Ngelishwa, emva kokufaka isicelo se-Channel Whitelist, enye i-prosaic ngakumbi, kodwa isiphene esibulalayo safunyanwa - i-NIH I (kwaye, okona kubaluleke kakhulu, unyana wam) wafumanisa ukuba ujongano lwayo alufanelekanga kakhulu, ngakumbi emva komkhwa wokusebenzisa umdlali we-YouTube Kids.

Ngokubanzi, emva kwexesha elithile ndandikulungele ukwenza ukuphunyezwa kwam. Emva kwexesha elithile, kuye kwenzeka ukubeka ithegi ekukhululweni kokuqala.

Izinto eziphambili:

  • Yongeza amajelo akho owathandayo kunye noluhlu lokudlalayo - luya kugcinwa kwaye lufakwe kwi-database yendawo
  • Kuluhlu lokudlala olongezelelweyo, cima iividiyo ezingafunekiyo ukuba awuzifuni
  • Uluhlu lweengcebiso luveliswa ngokungenamkhethe kuphela kumajelo kunye noluhlu lokudlala olufakwe kwisicelo

Umthombo ovulekileyo, ilayisensi ye-GPLv3: https://github.com/sadr0b0t/yashlang/

Apha ngezantsi sisishwankathelo sezona mpawu ziphambili kwiinkcukacha ezithe vetshe, kunye neenkcukacha zobugcisa zendlela yokudlala iividiyo zikaYouTube kwisicelo sakho se-Android ngaphandle kokusebenzisa i-API kaGoogle kunye nezisongelo zewebhu.

Kwisikrini esikhulu kunye nesikrini somdlali: iingcebiso ezingaqhelekanga ezivela kumajelo angaqhelekanga

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukukhangela ngoko nangoko kwiziko ledatha lendawo

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) => Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Yongeza isitishi esitsha okanye uluhlu lokudlala

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Khangela ngegama kwi-intanethi okanye ufake idilesi eyaziwayo. Uluhlu lweevidiyo zetshaneli okanye uluhlu lokudlala lugcinwa kwisiseko sedatha sasekhaya; ii-icon azigcinwanga.

Uluhlu lokudlala olunamandla-dlala iziphumo zokukhangela

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) => Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Kwiingcebiso zevidiyo kuya kubakho kuphela iividiyo ezanelisa umbuzo wokukhangela.

Ngokufanayo, ukuba uvula ividiyo kwisethingi yoluhlu lokudlalayo, kuphela iividiyo ezikuluhlu olufanayo lokudlala ziya kuvela kuluhlu lweengcebiso.

Uluhlu lokudlala kunye neetshaneli zinokucinywa okwethutyana kwaye zivulwe kwakhona

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Nceda uqaphele: iividiyo ezikuluhlu lokudlala olukhubazekileyo nazo ziya kunyamalala kwiziphumo zokukhangela, imbali yokubukela kunye nakuluhlu lweentandokazi. Kodwa ungakhathazeki, ziya kuvela kwakhona ngokukhawuleza emva kokuba uluhlu lokudlala luvuliwe kwakhona.

Yongeza ividiyo kuluhlu oluvaliweyo

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Ividiyo evaliweyo ayizukuboniswa kwizindululo, kwiziphumo zokukhangela, kwaye iya kunyamalala kuluhlu lwezinto ezithandwayo nakwimbali yokubukela. Ividiyo isaza kubonakala kuluhlu lokudlalayo.

Jonga uluhlu lwabamnyama kwaye wenze kwakhona izinto zivaliwe ngempazamo:
Useto > imenu yeheader > Blekhlista

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Iividiyo ozithandayo kunye nembali yokubukela

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Iividiyo ezizithandayo kwisikrini somdlali ziphawulwe ngeenkwenkwezi kwikona ephezulu ngasekunene.

Iimenyu zomxholo kwisihloko sesikrini kwaye ucofe ixesha elide kwiigalari kunye noluhlu

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Khuphela igama okanye idilesi yevidiyo okanye uluhlu lokudlalayo kwiscreen sokubukela okanye kulo naluphi na uluhlu.

Ukuqala ngokukhawuleza - yongeza amajelo acetyiswayo kunye noluhlu lokudlala

Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?) => Ukusweleka kukaKoshchei kukuluhlu lwezindululo (inokwenzeka ukuba wenze iYouTube ipholile kwaye ikhuseleke?)

Isicelo siya kujongeka kwangoko njengemifanekiso yesikrini engentla.

Iitshaneli ezingafunekiyo kunye noluhlu lokudlala lunokuvalwa okanye lucinywe kuseto.

isicwangciso

Iphepha leprojekthi: https://github.com/sadr0b0t/yashlang/
ngesiNgesi: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
ukhupho: https://github.com/sadr0b0t/yashlang/releases

Gcina ukhumbula ukuba ukutshintsha phakathi kweenguqulelo ezahlukeneyo ukusuka kwimithombo eyahlukeneyo kwisixhobo esinye akuyi kusebenza ngenxa yotyikityo olwahlukileyo lwefayile ye-apk; ngaphambi kokufaka inguqulelo kumthombo omtsha, kuya kufuneka uqale ucime inguqulelo efakiweyo kunye nedatha - i-cache yoluhlu lokudlala kunye nembali yokukhangela (okanye ufumanise indlela yokudlulisela idatha).

Iinkcukacha zobugcisa

Ayifuni akhawunti kaGoogle/YouTube, udinga i-Intanethi kuphela, isebenzisa la mathala alandelayo:

Umthombo ovulekileyo, ilayisensi ye-GPLv3 yasimahla.

umbuzo: Ngaba ngokuqhelekileyo kusemthethweni ukukrazula iiwebhusayithi ngaphandle kwemvume (okanye ngokuvalwa okucacileyo) kubabhali? UGoogle ususa usetyenziso kuDlalo lukaGoogle, abangasebenzisi i-API yabo, kodwa bacazulule iindawo zabo, kuba baphula isivumelwano sabo somsebenzisi.
impendulo: kunjalo, kusemthethweni, kuxhomekeke kuwe ukuba sesiphi isixhobo onokuthi usisebenzise ukufunda ulwazi olufumaneka esidlangalaleni. Ngaphaya koko: Inkundla yase-US iye yasemthethweni ngokupheleleyo ukukhuhla iwebhusayithi kwaye yalela ukungenelela kobugcisa kuyo., kodwa uGul usenokuba noluvo olwahlukileyo; ngokobuqu, andikanawo umnqweno wokuya kwinkundla yaseMerika ukuze ndibaqinisekise.

Enye ikhowudi

ilayibrari INewPipeExtractor - Iprojekthi yenkxaso yomdlali I-NewPipe, ikuvumela ukuba ukhuphele uluhlu lweevidiyo zetshaneli echaziweyo okanye uluhlu lokudlalayo, khuphela ulwazi oluneenkcukacha malunga nevidiyo edumileyo (into ebonakalayo kwiphepha lewebhu levidiyo), fumana idilesi yomfanekiso wevidiyo, kwaye ufumane nedilesi yevidiyo. umsinga.

Ikhowudi yokulayisha uluhlu lokudlala inzima kancinci, ke andizukuyinika apha, kwabo banomdla, jonga ikhowudi yomthombo, iyiklasi. ContentLoader.

Makhe sibone indlela yokufumana idilesi yomboniso wevidiyo kwidilesi yephepha levidiyo yoluntu kwaye uyidlale kumdlali.

Qhagamshela ithala leencwadi
app/build.gradle

dependencies {
...
    // NewPipe: youtube parser
    // https://github.com/TeamNewPipe/NewPipeExtractor
    implementation "com.github.TeamNewPipe:NewPipeExtractor:v0.17.4"
...
}

Kuyathakazelisa ukuba emva koku awusayi kuba nakho ukuyisebenzisa, kuba ... imizekelo iyakukhalaza malunga neklasi yoMkhupheli elahlekileyo. Inokukhutshelwa kwiprojekthi ukusuka kulawulo lovavanyo oluzenzekelayo INewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - isebenzela uguqulelo 0.17.4 (kubonakala ngathi le nxalenye yaphinda yenziwa kwinguqulelo entsha yethala leencwadi, kodwa kusafuneka sijonge).

Fumana idilesi yomboniso wevidiyo ngedilesi yephepha levidiyo kwiwebhusayithi yeYouTube:

app/src/main/java/su/sadrobot/yashlang/controller/ContentLoader.java

    public String extractYtStreamUrl(final String ytVidUrl) throws ExtractionException, IOException {
        // https://github.com/TeamNewPipe/NewPipeExtractor/blob/dev/extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/YoutubeStreamExtractorDefaultTest.java
        NewPipe.init(Downloader.getInstance(), new Localization("GB", "en"));
        final YoutubeStreamExtractor extractor = (YoutubeStreamExtractor) YouTube
                .getStreamExtractor(ytVidUrl);
        extractor.fetchPage();
        final String streamUrl = extractor.getVideoStreams().size() > 0 ? extractor.getVideoStreams().get(0).getUrl() : null;
//        for (final VideoStream stream : extractor.getVideoStreams()) {
//            stream.getUrl();
//        }
        return streamUrl;
    }

Idilesi yevidiyo ytVidUrl inokuba yidilesi yoluntu lwephepha layo nayiphi na ividiyo kwiwebhusayithi yeYouTube, umzekelo. https://www.youtube.com/watch?v=pd2RlatmNRk

Umdlali uya kuba umbonisi ukusuka kuGoogle uqobo. Esi ayisosongelo sewebhu ngaphezulu kweYouTube, kodwa ngumdlali obambekayo wokwenyani wokudlala naziphi na iividiyo, ezibhetyebhetye kwaye zinokwenzeka ngokwezifiso. Isenokudlala imijelo yevidiyo esuka kuYouTube ukuba uyinika idilesi echanekileyo. Sisanda kufumana idilesi yomsinga, ngoko ke masibone ukuba siyithumela njani kumdlali.

Qhagamshela ithala leencwadi kwiprojekthi app/build.gradle:

dependencies {
...
    // google Exoplayer
    // https://github.com/google/ExoPlayer
    // https://exoplayer.dev/
    implementation 'com.google.android.exoplayer:exoplayer:2.10.8'
...
}

Asiyi kuqwalasela zonke iinqununu zokubeka icandelo lomdlali kwisikrini sesicelo (ungajonga imizekelo kwiwebhusayithi yeprojekthi okanye kwikhowudi), siya kujonga kuphela indlela yokuqalisa ukudlala ividiyo esuka kuYouTube kumdlali idilesi efunyenwe ngasentla:

app/src/main/java/su/sadrobot/yashlang/WatchVideoActivity.java

private void playVideoStream(final String streamUrl, final long seekTo) {
    if (streamUrl == null) {
        // остановить проигрывание текущего ролика, если был загружен
        videoPlayerView.getPlayer().stop(true);
    } else {
        // https://exoplayer.dev/
        // https://github.com/google/ExoPlayer

        final Uri mp4VideoUri = Uri.parse(streamUrl);
        final MediaSource videoSource = new ProgressiveMediaSource.Factory(videoDataSourceFactory)
                .createMediaSource(mp4VideoUri);

        // Поставим на паузу старое видео, пока готовим новое
        if (videoPlayerView.getPlayer().getPlaybackState() != Player.STATE_ENDED) {
            // Если ставить на паузу здесь после того, как плеер встал на паузу сам, закончив
            // играть видео, получим здесь второе событие STATE_ENDED, поэтому нам нужна здесь
            // специальная проверка.
            // При этом значение getPlayWhenReady() останется true, поэтому проверяем именно состояние.
            // https://github.com/google/ExoPlayer/issues/2272
            videoPlayerView.getPlayer().setPlayWhenReady(false);
        }

        // Prepare the player with the source.
        ((SimpleExoPlayer) videoPlayerView.getPlayer()).prepare(videoSource);

        // Укажем текущую позицию сразу при загрузке видео
        // (в коментах что-то пишут что-то про датасорсы, которые поддерживают или не поддерживают
        // переходы seek при загрузке, похоже, что это фигня - просто делаем seek сразу после загрузки)
        // Exoplayer plays new Playlist from the beginning instead of provided position
        // https://github.com/google/ExoPlayer/issues/4375
        // How to load stream in the desired position? #2197
        // https://github.com/google/ExoPlayer/issues/2197
        // в этом месте нормлаьный duration еще не доступен, поэтому его не проверяем
        //if(seekTo > 0 && seekTo < videoPlayerView.getPlayer().getDuration()) {
        if (seekTo > 0) {
            // на 5 секунд раньше
            videoPlayerView.getPlayer().seekTo(seekTo - 5000 > 0 ? seekTo - 5000 : 0);
        }
        videoPlayerView.getPlayer().setPlayWhenReady(true);
    }
}

Imiba eyaziwayo

  • Ayizudlala iividiyo ezinezithintelo zobudala ezifuna ukungena kwiakhawunti yakho kaGoogle/YouTube

umzekelo: Ilya Muromets, iMosfilm Cinema Concern, URuslan noLyudmila bhanyabhanya 1, iMosfilm Film Concern

ingcebiso: yongeza ezo vidiyo kuluhlu olumnyama okanye cela umbhali wevidiyo ukuba asuse umda obekwe ngempazamo.

  • Ezinye iividiyo ezisasazwayo apho inkonzo ibuyisela ubude obungu-0 aziyi kudlala (kwiividiyo ezinjalo, ubude bexesha kuluhlu nakwigalari iphawulwe ngokuthi “[dur undef]”)

umzekelo: Yilindele! Yonke imiba yeSoyuzmultfilm HD (Iikhathuni zabantwana), iiKhathuni ezivela kwi studio yeSoyuzmultfilm, Iikhathuni eziphezulu ze-Soyuzmultfilm, Iikhathuni ezivela kwi-studio ye-Soyuzmultfilm

ingcebiso: yongeza iividiyo ezinjalo kuluhlu lwabamnyama.

  • Iividiyo ezifumaneka kuphela ngoqhakamshelwano oluthe ngqo azinakuqukwa kuluhlu lwasekuhlaleni lokudlala, nokuba ukhuphela zonke iividiyo zabasebenzisi.

umzekelo: Ukulawulwa koMlilo Isiqendu 1, iMosfilm Cinema Concern

  • Ukuba udibana nevidiyo kawonkewonke engafuni ukungena ngemvume, idlala kwisikhangeli, kodwa ayidlali kumdlali, thumela ingxelo ye-bug (kunokwenzeka ukuba ingxaki sele ilungisiwe kwinguqulelo entsha. INewPipeExtractor kwaye uya kufuna kuphela ukuhlaziya indibano ngolu guqulelo, umzekelo).

  • Ujongano lunokucotha ukuba i-Intanethi iyacotha (kodwa ayicinywanga)

Ngenxa yoko,

Unyana wam wasuka kwithebhulethi waya kwi-Samsung smart TV, engakwazi ukuqhuba usetyenziso lwe-Android. Ngoko ke, olona lawulo lubalaseleyo lwabazali iselobuqu.

Kodwa isicelo siye sabonakala silungile ngokwaneleyo ukuba ndiqalise ukusisebenzisa ngokwam. Umbono wokuqala kwiinguqulelo zokuqala zokusebenza yayikukuba ndikwelinye ilizwe. Wonke umxholo ukhutshelwa kwi-YouTube, kodwa le nto ayisekho i-YouTube, kodwa enye into, ikhuselekile kwaye ilawulwa, njengokungathi uthathe i-centipede esweni lakho kwaye uyibeke kwisitya seglasi. Kwaye konke malunga neengcebiso.

umthombo: www.habr.com

Yongeza izimvo