Isingeniso sifushane: Ngifuna ukukhuluma ngesidlali se-inthanethi se-YouTube se-Android ngezinhlu zokudlalayo zasendaweni, iziteshi nezincomo.
Isingeniso esinwetshiwe:
Esikhathini esithile esidlule ngihlangabezane nenkinga efanayo njengombhali wohlelo lokusebenza oluhle
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:
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
Ukusesha okusheshayo kusizindalwazi sendawo
Engeza isiteshi esisha noma uhlu lwadlalwayo
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
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
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
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
Amavidiyo ayintandokazi nomlando wokubuka
Amavidiyo ayintandokazi esikrinini somdlali amakwe ngenkanyezi ekhoneni eliphezulu kwesokudla.
Amamenyu wokuqukethwe esihlokweni sesikrini futhi uchofoze isikhathi eside kumagalari nohlu
Kopisha igama noma ikheli levidiyo noma uhlu lwadlalwayo esikrinini sokubuka noma kunoma yiluphi uhlu.
Ukuqala okusheshayo - engeza iziteshi ezinconyiwe nezinhlu zokudlalayo
Uhlelo lokusebenza luzobukeka ngokushesha njengezithombe-skrini ezingenhla.
Iziteshi ezingadingeki nohlu lwadlalwayo lungavalwa noma lususwe kuzilungiselelo.
setting
Ikhasi lephrojekthi:
ngesiNgisi:
ukukhishwa:
- Ayikho ku-Google Play futhi ngeke ibe khona esikhathini esizayo esiseduze (i-Google ivimbela izinhlelo zokusebenza ezidlula i-API futhi zihlaziye iwebhusayithi yazo, okuhlanganisa Uhlu Olugunyaziwe Lwesiteshi noma isidlali se-NewPipe)
- Yakha ngemithombo:
https://github.com/sadr0b0t/yashlang/ - Landa i-apk esigabeni sokukhishwa:
https://github.com/sadr0b0t/yashlang/releases - Ngethemba ukuthi izovela kukhathalogi ngemva kwesikhathi esithile
I-F-Droid (isicelo sokwengezwa sibonakala sivunyiwe , kodwa akukadluli isikhathi esingangenyanga), kodwa okwamanje
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:
I-NewPipeExtractor ukuthola idatha evela kusevisi ye-YouTube kanyeI-ExoPlayer ukudlala ividiyo.
Umthombo ovulekile, ilayisense yamahhala ye-GPLv3.
umbuzo: Ingabe kusemthethweni ukuklwebha amawebhusayithi ngaphandle kwemvume (noma ngokuvinjelwa okusobala) kubabhali?
impendulo: Yebo, kusemthethweni, kukuwe ukuthi iliphi ithuluzi ongalisebenzisa ukuze ufunde ulwazi olutholakala esidlangalaleni. Ngaphezu kwalokho:
Ikhodi ethile
umtapo
Ikhodi yokulayisha uhlu lwadlalwayo inzima kancane, ngakho-ke ngeke ngiyinikeze lapha, kulabo abanentshisekelo, bheka ikhodi yomthombo, empeleni iklasi
Ake sibone ukuthi ulithola kanjani ikheli lokudlalwa kwevidiyo ekhelini lekhasi levidiyo esesidlangalaleni futhi silidlale esidlalini.
Xhuma ilabhulali ku
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
Thola ikheli lokudlalwa kwevidiyo ngekheli lekhasi levidiyo kuwebhusayithi ye-YouTube:
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.
Umdlali uzoba
Xhuma ilabhulali kuphrojekthi
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:
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:
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:
iseluleko: engeza amavidiyo anjalo ohlwini lwabavinjelwe.
- Amavidiyo atholakala kuphela ngezixhumanisi eziqondile angeke afakwe ohlwini lwadlalwayo lwasendaweni, ngisho noma ulanda wonke amavidiyo omsebenzisi.
isibonelo:
-
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