Isingeniso sifutshane: Ndifuna ukuthetha ngomdlali we-intanethi we-YouTube we-Android kunye noluhlu lokudlala lwasekhaya, amajelo kunye neengcebiso.
Intshayelelo eyandisiweyo:
Ngexesha elidlulileyo ndadibana ngqo nengxaki efanayo nombhali wesicelo esimangalisayo
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:
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
Ukukhangela ngoko nangoko kwiziko ledatha lendawo
Yongeza isitishi esitsha okanye uluhlu lokudlala
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
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
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
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
Iividiyo ozithandayo kunye nembali yokubukela
Iividiyo ezizithandayo kwisikrini somdlali ziphawulwe ngeenkwenkwezi kwikona ephezulu ngasekunene.
Iimenyu zomxholo kwisihloko sesikrini kwaye ucofe ixesha elide kwiigalari kunye noluhlu
Khuphela igama okanye idilesi yevidiyo okanye uluhlu lokudlalayo kwiscreen sokubukela okanye kulo naluphi na uluhlu.
Ukuqala ngokukhawuleza - yongeza amajelo acetyiswayo kunye noluhlu lokudlala
Isicelo siya kujongeka kwangoko njengemifanekiso yesikrini engentla.
Iitshaneli ezingafunekiyo kunye noluhlu lokudlala lunokuvalwa okanye lucinywe kuseto.
isicwangciso
Iphepha leprojekthi:
ngesiNgesi:
ukhupho:
- Ayikho kuGoogle Play kwaye ayizukuba kwixesha elizayo elingekude (uGoogle uvala usetyenziso oludlula iAPI kwaye ucazulule iwebhusayithi yabo, kubandakanya noLuhlu olumhlophe lweSiteshi okanye umdlali weNewPipe)
- Yakha kwimithombo yolwazi:
https://github.com/sadr0b0t/yashlang/ - Khuphela i-apk kwicandelo lokukhutshwa:
https://github.com/sadr0b0t/yashlang/releases - Ndiyathemba ukuba iya kuvela kwikhathalogu emva kwexesha elithile
F-Droid (isicelo sokongezwa sibonakala samkelwe , kodwa akahambanga phambili malunga nenyanga), kodwa okwangoku
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:
INewPipeExtractor ukufumana idatha evela kwinkonzo kaYouTube kunyeumbonisi ukudlala ividiyo.
Umthombo ovulekileyo, ilayisensi ye-GPLv3 yasimahla.
umbuzo: Ngaba ngokuqhelekileyo kusemthethweni ukukrazula iiwebhusayithi ngaphandle kwemvume (okanye ngokuvalwa okucacileyo) kubabhali?
impendulo: kunjalo, kusemthethweni, kuxhomekeke kuwe ukuba sesiphi isixhobo onokuthi usisebenzise ukufunda ulwazi olufumaneka esidlangalaleni. Ngaphaya koko:
Enye ikhowudi
ilayibrari
Ikhowudi yokulayisha uluhlu lokudlala inzima kancinci, ke andizukuyinika apha, kwabo banomdla, jonga ikhowudi yomthombo, iyiklasi.
Makhe sibone indlela yokufumana idilesi yomboniso wevidiyo kwidilesi yephepha levidiyo yoluntu kwaye uyidlale kumdlali.
Qhagamshela ithala leencwadi
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
Fumana idilesi yomboniso wevidiyo ngedilesi yephepha levidiyo kwiwebhusayithi yeYouTube:
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.
Umdlali uya kuba
Qhagamshela ithala leencwadi kwiprojekthi
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:
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:
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:
ingcebiso: yongeza iividiyo ezinjalo kuluhlu lwabamnyama.
- Iividiyo ezifumaneka kuphela ngoqhakamshelwano oluthe ngqo azinakuqukwa kuluhlu lwasekuhlaleni lokudlala, nokuba ukhuphela zonke iividiyo zabasebenzisi.
umzekelo:
-
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