Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Isingeniso sifushane: Ngifuna ukukhuluma ngesidlali se-inthanethi se-YouTube se-Android ngezinhlu zokudlalayo zasendaweni, iziteshi nezincomo.

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Isingeniso esinwetshiwe:
Esikhathini esithile esidlule ngihlangabezane nenkinga efanayo njengombhali wohlelo lokusebenza oluhle Uhlu Olugunyaziwe Lwesiteshi, futhi ngizimisele ngokwami ​​isimo sengqondo esifanayo ngakho: Ngifuna ukukwazi ukunikeza ingane yami ithebhulethi noma i-smartphone enamakhathuni ngezikhathi ezithile, kodwa angijabulile neze lapho, ngemva kokuchofoza 2-3, uhlu. wezincomo ezinhlelweni ezijwayelekile - amaklayenti e-YouTube - kuthatha ingane.

Ngeshwa, ngemva kokufaka isicelo se-Channel Whitelist, kwatholakala enye i-prosaic eyengeziwe, kodwa namanje iphutha elibulalayo - i-NIH I (futhi, okubaluleke kakhulu, indodana yami) yathola ukuthi isixhumi esibonakalayo singalungile kakhulu, ikakhulukazi ngemva komkhuba wokusebenzisa isidlali se-YouTube Kids.

Ngokuvamile, ngemva kwesikhathi esithile ngase ngilungele ukuzenzela ukuqaliswa kwami. Ngemva kwesikhathi esithile, kwaba nokwenzeka ukubeka ithegi ekukhululweni kokuqala.

Izici ezibalulekile:

  • Engeza iziteshi ozithandayo nezinhla zokudlalayo - zizolondolozwa futhi zifakwe ohlwini kusizindalwazi sendawo
  • Phakathi kwezinhlu zokudlalayo ezingeziwe, vala amavidiyo angadingekile uma ungawadingi
  • Uhlu lwezincomo lwenziwa ngokungahleliwe kuphela eziteshini nohlu lwadlalwayo olungezwe ohlelweni lokusebenza

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

Ngezansi ukubuka konke kwezici eziyinhloko ngemininingwane eyengeziwe, kanye neminye imininingwane yobuchwepheshe yokuthi udlalwa kanjani amavidiyo e-YouTube ohlelweni lwakho lwe-Android ngaphandle kokusebenzisa i-Google API nezisonga zewebhu.

Esikrinini esikhulu nasesikrinini somdlali: izincomo ezingahleliwe ezivela eziteshini ezingahleliwe

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukusesha okusheshayo kusizindalwazi sendawo

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) => Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Engeza isiteshi esisha noma uhlu lwadlalwayo

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Sesha ngegama ku-inthanethi noma ufake ikheli elaziwayo. Uhlu lwamavidiyo esiteshi noma lohlu lwadlalwayo lulondolozwe kusizindalwazi sendawo, izithonjana azigciniwe.

Uhlu lokudlalayo olunamandla - dlala imiphumela yosesho

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) => Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ezincomweni zevidiyo kuzoba namavidiyo kuphela anelisa umbuzo wosesho.

Ngokufanayo, uma uvula ividiyo ohlwini lwadlalwayo, amavidiyo asohlwini lwadlalwayo olufanayo kuphela azovela ohlwini lwezincomo.

Izinhla zokudlalayo neziteshi zingavalwa okwesikhashana futhi zivulwe futhi

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Sicela uqaphele: amavidiyo asohlwini lwadlalwayo olukhutshaziwe azophinde anyamalale emiphumeleni yosesho, emlandweni wokubukwa kanye nasohlwini lwezintandokazi. Kodwa ungakhathazeki, zizovela lapho futhi ngokushesha ngemva kokuvulwa kohlu lwadlalwayo futhi.

Engeza ividiyo ohlwini oluvinjelwe

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Ividiyo evinjiwe ngeke iboniswe ezincomweni, emiphumeleni yosesho, futhi izonyamalala ohlwini lwezintandokazi nasemlandweni wokubuka. Ividiyo isazobonakala kuzilungiselelo zohlu lwadlalwayo.

Buka uhlu oluvinjelwe futhi uphinde unike amandla izinto ezivinjwe ngephutha:
Amasethingi > imenyu kanhlokweni > Uhlu lokuvinjelwa

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Amavidiyo ayintandokazi nomlando wokubuka

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Amavidiyo ayintandokazi esikrinini somdlali amakwe ngenkanyezi ekhoneni eliphezulu kwesokudla.

Amamenyu wokuqukethwe esihlokweni sesikrini futhi uchofoze isikhathi eside kumagalari nohlu

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Kopisha igama noma ikheli levidiyo noma uhlu lwadlalwayo esikrinini sokubuka noma kunoma yiluphi uhlu.

Ukuqala okusheshayo - engeza iziteshi ezinconyiwe nezinhlu zokudlalayo

Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?) => Ukushona kuka-Koshchei kusohlwini lwezincomo (kungenzeka yini ukwenza i-YouTube ithokomele futhi iphephe?)

Uhlelo lokusebenza luzobukeka ngokushesha njengezithombe-skrini ezingenhla.

Iziteshi ezingadingeki nohlu lwadlalwayo lungavalwa noma lususwe kuzilungiselelo.

setting

Ikhasi lephrojekthi: https://github.com/sadr0b0t/yashlang/
ngesiNgisi: https://github.com/sadr0b0t/yashlang/blob/master/README.en.md
ukukhishwa: https://github.com/sadr0b0t/yashlang/releases

Khumbula ukuthi ukushintsha phakathi kwezinguqulo ezihlukene kusuka emithonjeni ehlukene kudivayisi efanayo ngeke kusebenze ngenxa yokusayina okuhlukile kwefayela le-apk; ngaphambi kokufaka inguqulo emthonjeni omusha, kuzodingeka uqale ususe inguqulo efakiwe kanye nedatha - inqolobane yohlu lwadlalwayo nomlando wokuphequlula (noma thola ukuthi uyidlulisela kanjani idatha).

Imininingwane yobuchwepheshe

Ayidingi i-akhawunti ye-Google/YouTube, udinga i-inthanethi kuphela, isebenzisa imitapo yolwazi elandelayo:

Umthombo ovulekile, ilayisense yamahhala ye-GPLv3.

umbuzo: Ingabe kusemthethweni ukuklwebha amawebhusayithi ngaphandle kwemvume (noma ngokuvinjelwa okusobala) kubabhali? I-Google isusa izinhlelo zokusebenza ku-Google Play, abangasebenzisi i-API yabo, kodwa bahlaziye amasayithi abo, ngoba bephula isivumelwano sabo somsebenzisi.
impendulo: Yebo, kusemthethweni, kukuwe ukuthi iliphi ithuluzi ongalisebenzisa ukuze ufunde ulwazi olutholakala esidlangalaleni. Ngaphezu kwalokho: Inkantolo yase-US ikugunyaze ngokuphelele ukukhuhla iwebhusayithi futhi yenqabele ukugxambukela kwayo., kodwa uGul angase abe nombono ohlukile; mina ngokwami, angikabi naso isifiso sokuya enkantolo yaseMelika ukuze ngibabonise.

Ikhodi ethile

umtapo I-NewPipeExtractor - iphrojekthi yokusekelwa kwabadlali I-NewPipe, ikuvumela ukuthi ulande uhlu lwamavidiyo esiteshi esicacisiwe noma uhlu lwadlalwayo, landa imininingwane enemininingwane ngevidiyo edumile (okubonakala ekhasini lewebhu levidiyo), thola ikheli lesithonjana sevidiyo, futhi uthole nekheli levidiyo. ukusakaza.

Ikhodi yokulayisha uhlu lwadlalwayo inzima kancane, ngakho-ke ngeke ngiyinikeze lapha, kulabo abanentshisekelo, bheka ikhodi yomthombo, empeleni iklasi ContentLoader.

Ake sibone ukuthi ulithola kanjani ikheli lokudlalwa kwevidiyo ekhelini lekhasi levidiyo esesidlangalaleni futhi silidlale esidlalini.

Xhuma ilabhulali ku
app/build.gradle

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

Kuyathakazelisa ukuthi ngemva kwalokhu ngeke ukwazi ukukusebenzisa, ngoba... izibonelo zizokhononda mayelana nekilasi Lokulanda Okulahlekile. Ingakopishelwa kuphrojekthi kusuka kunkomba yokuhlola okuzenzakalelayo I-NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - isebenzela inguqulo 0.17.4 (kubonakala sengathi le ngxenye yenziwe kabusha enguqulweni entsha yomtapo wolwazi, kodwa sisadinga ukuhlola).

Thola ikheli lokudlalwa kwevidiyo ngekheli lekhasi levidiyo kuwebhusayithi ye-YouTube:

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;
    }

Ikheli levidiyo elithi ytVidUrl lingaba yikheli lomphakathi lekhasi lanoma iyiphi ividiyo kuwebhusayithi ye-YouTube, isibonelo. https://www.youtube.com/watch?v=pd2RlatmNRk

Umdlali uzoba I-ExoPlayer kusuka ku-Google uqobo. Lesi akusona isiqephu sewebhu phezu kwe-YouTube, kodwa isidlali esishunyekiwe sangempela sokudlala noma imaphi amavidiyo, avumelana nezimo futhi enziwa ngendlela oyifisayo. Ingase futhi idlale ukusakazwa kwevidiyo okuvela ku-YouTube uma uyihlinzeka ngekheli elilungile. Sisanda kuthola ikheli lokusakaza, ngakho-ke ake sibone ukuthi silithumela kanjani kumdlali.

Xhuma ilabhulali kuphrojekthi app/build.gradle:

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

Ngeke sicabangele wonke ama-nuances okubeka ingxenye yomdlali esikrinini sohlelo lokusebenza (ungabheka izibonelo kuwebhusayithi yephrojekthi noma kukhodi), sizobheka kuphela ukuthi ungaqala kanjani ukudlala ividiyo evela ku-YouTube kumdlali ikheli elitholwe ngenhla:

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);
    }
}

Izinkinga Ezaziwayo

  • Ngeke idlale amavidiyo anemikhawulo yobudala edinga ukungena ngemvume ku-akhawunti yakho ye-Google/YouTube

isibonelo: Ilya Muromets, Mosfilm Cinema Concern, URuslan noLyudmila ifilimu 1, Mosfilm Film Concern

iseluleko: engeza amavidiyo anjalo ohlwini oluvinjelwe noma cela umbhali wevidiyo ukuthi asuse umkhawulo obekwe ngephutha.

  • Amanye amavidiyo asakazwayo isevisi ebuyisela ubude obuyiziro ngeke adlale (kumavidiyo anjalo, ubude besikhathi sohlu negalari imakwe ngokuthi “[dur undef]”)

isibonelo: Ilinde! Zonke Izinkinga ze-Soyuzmultfilm HD (Opopayi bezingane), Amakhathuni avela ku-studio ye-Soyuzmultfilm, Opopayi abaphambili i-Soyuzmultfilm, Opopayi abavela ku-Soyuzmultfilm studio

iseluleko: engeza amavidiyo anjalo ohlwini lwabavinjelwe.

  • Amavidiyo atholakala kuphela ngezixhumanisi eziqondile angeke afakwe ohlwini lwadlalwayo lwasendaweni, ngisho noma ulanda wonke amavidiyo omsebenzisi.

isibonelo: Ukulawulwa Komlilo Isiqephu 1, I-Mosfilm Cinema Concern

  • Uma uhlangabezana nevidiyo esesidlangalaleni engadingi ukungena ngemvume, idlala esipheqululini, kodwa ingadlali kusidlali, thumela umbiko wesiphazamisi (kungenzeka ukuthi inkinga isilungisiwe vele enguqulweni entsha. I-NewPipeExtractor futhi uzodinga kuphela ukubuyekeza umhlangano ngale nguqulo, isibonelo).

  • Ukuxhumana kungase kwehlise ijubane uma i-inthanethi ihamba kancane (kodwa ingavaliwe)

Ekugcineni

Indodana yami yasuka kuthebhulethi yaya ku-Samsung smart TV, engakwazi ukusebenzisa izinhlelo zokusebenza ze-Android. Ngakho-ke, ukulawula okungcono kakhulu komzali kusengomuntu siqu.

Kodwa uhlelo lokusebenza lwabonakala lungilungele ukuthi ngiqale ukulisebenzisa ngokwami. Umbono wokuqala ovela ezinguqulweni zokuqala zokusebenza kwaba ukuthi ngangikwelinye izwe. Konke okuqukethwe kulandwa ku-YouTube, kodwa lokhu akuseyona i-YouTube, kodwa sekungokunye, okuphephile futhi okulawulwayo, njengokungathi ukhiphe i-centipede esweni lakho bese uyifaka embizeni yengilazi. Futhi konke mayelana nezincomo.

Source: www.habr.com

Engeza amazwana