ProHoster > Blog > vaovao amin'ny Internet > Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)
Ny fahafatesan'i Koshchei dia ao anatin'ny lisitr'ireo tolo-kevitra (azo atao ve ny manao YouTube milamina sy azo antoka?)
Fohy ny teny fampidirana: Te hiresaka momba ny mpilalao an-tserasera YouTube ho an'ny Android aho miaraka amin'ny playlist, fantsona ary tolo-kevitra eo an-toerana.
Fampidirana nitarina:
Fotoana vitsy lasa izay dia tojo olana mitovy amin'ny mpanoratra ny fampiharana mahafinaritra aho Channel Whitelist, ary tapa-kevitra ho an'ny tenako ny toe-tsaina mitovy amin'izany: tiako ny hanome ny zanako tablette na smartphone misy sariitatra tsindraindray, saingy tsy faly mihitsy aho hoe aiza, aorian'ny 2-3 clicks, ny lisitra. ny tolo-kevitra amin'ny fampiharana mahazatra - mpanjifa YouTube - maka ilay zaza.
Indrisy anefa, taorian'ny fametrahana ny fampiharana Channel Whitelist, dia nisy lesoka iray hafa, saingy mbola mahafaty ihany no hita - NIH I (ary, ny tena zava-dehibe indrindra, ny zanako lahy) dia nahita fa tsy dia mety loatra ny interface, indrindra taorian'ny fahazarana mampiasa ny mpilalao YouTube Kids.
Amin'ny ankapobeny, rehefa afaka kelikely dia vonona ny hanao ny fampiharana manokana aho. Rehefa afaka kelikely, dia azo atao ny mametraka marika amin'ny famoahana voalohany.
Zava-dehibe:
Ampio ny fantsona sy playlists ankafizinao - ho voatahiry sy hosoratana ao amin'ny angon-drakitra eo an-toerana izy ireo
Ao anatin'ny playlist fanampiny, vonoy ny horonan-tsary tsy ilaina raha tsy mila azy ireo ianao
Ny lisitr'ireo tolo-kevitra dia noforonina kisendrasendra fotsiny avy amin'ny fantsona sy ny playlist nampidirina amin'ny fampiharana
Ity ambany ity ny topimaso momba ny endri-javatra lehibe amin'ny antsipiriany bebe kokoa, miampy antsipiriany ara-teknika momba ny fomba filalaovana horonan-tsary YouTube amin'ny fampiharana Android anao nefa tsy mampiasa ny Google API sy ny fonon-tranonkala.
Eo amin'ny efijery lehibe sy eo amin'ny efijery mpilalao: tolo-kevitra kisendrasendra avy amin'ny fantsona tsy kisendrasendra
Fikarohana eo noho eo amin'ny angon-drakitra eo an-toerana
=>
Manampia fantsona na playlist vaovao
Mitadiava amin'ny anarana amin'ny Internet na asio adiresy fantatra. Ny lisitry ny lahatsarin'ny fantsona na playlist dia voatahiry ao amin'ny angon-drakitra eo an-toerana; tsy voatahiry ny kisary.
Playlist dinamika - milalao ny valin'ny fikarohana
=>
Ao amin'ny tolo-kevitry ny horonan-tsary dia tsy hisy afa-tsy horonan-tsary mahafa-po ny fangatahana fikarohana.
Toy izany koa, raha manokatra horonan-tsary avy amin'ny lisitry ny lisitry ny playlist ianao, dia horonan-tsary avy amin'ny playlist iray ihany no hiseho amin'ny lisitry ny soso-kevitra.
Azo vonoina vonjimaika sy velomina indray ny lisitry ny kilalao sy ny fantsona
Mariho azafady: hanjavona ao amin'ny valin'ny fikarohana, ny tantaran'ny fijerena ary avy amin'ny lisitry ny ankafiziny ihany koa ny horonan-tsary avy amin'ny playlist kilemaina. Aza manahy anefa fa hiseho eo indray avy hatrany izy ireo rehefa alefa indray ny playlist.
Ampio horonan-tsary amin'ny lisitra mainty
Ny horonan-tsary voasakana dia tsy haseho amin'ny tolo-kevitra, amin'ny valin'ny fikarohana, ary hanjavona ao amin'ny lisitry ny ankafizina sy amin'ny tantaran'ny fijerena. Mbola ho hita ao amin'ny firafitry ny playlist ny horonan-tsary.
Tsy ao amin'ny Google Play izy io ary tsy ho avy tsy ho ela ( Google dia mandrara ny rindranasa mandingana ny API sy manara-maso ny tranokalany, anisan'izany ny Channel Whitelist voalaza na ny mpilalao NewPipe)
Manantena aho fa hiseho ao amin'ny katalaogy rehefa afaka fotoana fohy F-Droid (toa ekena ny fangatahana fanampiana, fa tsy nihetsika efa ho iray volana), nefa tsy mbola
Ataovy ao an-tsaina fa ny fifandimbiasana eo amin'ny dikan-teny samihafa avy amin'ny loharano samihafa amin'ny fitaovana iray dia tsy handeha noho ny sonia samihafa amin'ny rakitra apk; alohan'ny hametrahana ny dikan-teny avy amin'ny loharano vaovao dia tsy maintsy mamafa ny dikan-napetraka miaraka amin'ny angon-drakitra ianao - ny cache playlist sy ny tantaran'ny fitetezana (na fantaro ny fomba famindrana angona).
Heviny ara-teknika
Tsy mila kaonty Google/YouTube, Internet ihany no ilainao, mampiasa ireto trano famakiam-boky manaraka ireto:
Fanontaniana: Ara-dalàna amin'ny ankapobeny ve ny mikisaka tranonkala tsy nahazoana alalana (na misy fandrarana mazava) avy amin'ny mpanoratra? Google dia manala ny fampiharana amin'ny Google Play, izay tsy mampiasa ny API-ny, fa manara-maso ny tranokalany, satria mandika ny fifanarahana amin'ny mpampiasa azy izy ireo. valiny: mazava ho azy fa ara-dalàna izany, miankina aminao izay fitaovana ampiasaina hamakiana ny vaovao azo ampahibemaso. Ankoatra izany: Ny fitsarana amerikana dia nanara-dalàna tanteraka ny fikikisana tranonkala ary nandrara ny fitsabahana ara-teknika amin'izany., saingy mety manana hevitra hafa i Gul; izaho manokana dia tsy mbola manana faniriana handeha any amin'ny fitsarana amerikana handresy lahatra azy ireo.
Kaody sasany
fitehirizam-boky NewPipeExtractor - tetikasa fanohanana mpilalao Newpipe, dia ahafahanao misintona lisitr'ireo horonan-tsary ho an'ny fantsona na playlist iray voafaritra, misintona fampahalalana amin'ny antsipiriany momba ny horonan-tsary malaza (izay hita ao amin'ny pejin-tranonkalan'ilay horonan-tsary), alao ny adiresin'ny kisary video, ary alao ihany koa ny adiresin'ilay horonan-tsary stream.
Somary manahirana kely ny code amin'ny famenoana ny playlist, ka tsy homeko eto, ho an'izay liana, jereo ny source code, kilasy io. ContentLoader.
Andeha hojerentsika ny fomba hahazoana ny adiresin'ny horonan-tsary avy amin'ny adiresin'ny pejin-dahatsary ho an'ny daholobe ary milalao izany amin'ny mpilalao.
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;
}
Ny adiresin'ny horonan-tsary ytVidUrl dia mety ho adiresin'ny daholobe amin'ny pejin'ny horonan-tsary rehetra ao amin'ny tranokala YouTube, ohatra. https://www.youtube.com/watch?v=pd2RlatmNRk
Ny mpilalao dia ho exoplayer avy amin'ny Google mihitsy. Tsy fonon-tranonkala amin'ny YouTube ity, fa mpilalao tena tafiditra amin'ny filalaovana horonan-tsary rehetra, mora azo sy azo zahana. Afaka milalao horonan-tsarimihetsika avy amin'ny YouTube koa izy io raha omenao ny adiresy marina. Vao avy nahazo ny adiresin'ny stream izahay, ka andeha hojerentsika ny fomba handefasana azy amin'ny mpilalao.
Tsy hojerentsika ny nuance rehetra amin'ny fametrahana ny singa mpilalao eo amin'ny efijery fampiharana (azonao jerena ny ohatra ao amin'ny tranokalan'ny tetikasa na ao amin'ny code), hojerentsika fotsiny ny fomba hanombohana milalao horonantsary avy amin'ny YouTube amin'ny mpilalao amin'ny ny adiresy voaray etsy ambony:
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);
}
}
toro-hevitra: ampidiro ao amin'ny lisitra mainty ny horonan-tsary toy izany na anontanio ny mpanoratra ny horonan-tsary hanaisotra ny fameperana izay tsy nety.
Ny horonan-tsary fandefasana sasany izay mamerina ny halavan'ny serivisy dia tsy handeha (ho an'ny horonan-tsary toy izany, ny faharetan'ny lisitra sy ny galeria dia voamarika ho "[dur undef]")
torohevitra: ampio ny horonan-tsary toy izany ao amin'ny lisitra mainty.
Ireo horonan-tsary izay tsy misy afa-tsy amin'ny alalan'ny rohy mivantana dia mety tsy ho tafiditra ao amin'ny playlist eo an-toerana, na dia alainao daholo aza ny lahatsarin'ny mpampiasa.
Raha sendra lahatsary ho an'ny daholobe tsy mila fidirana ianao, milalao ao amin'ny navigateur, fa tsy milalao ao amin'ny mpilalao, alefaso ny tatitra momba ny bibikely (mety ho efa voavaha ny olana amin'ny dikan-teny vaovao. NewPipeExtractor ary mila manavao ny fivoriambe amin'ity dikan-teny ity ianao, ohatra).
Mety hihena ny interface raha miadana ny Internet (fa tsy maty)
Ho vokany,
Ny zanako lahy dia nifindra avy amin'ny takelaka iray mankany amin'ny Samsung smart TV, izay tsy afaka mampiasa fampiharana Android. Noho izany, ny fanaraha-maso tsara indrindra ataon'ny ray aman-dreny dia mbola manokana.
Saingy ny fampiharana dia hita fa mety ho ahy ny manomboka mampiasa azy. Ny fahatsapana voalohany tamin'ireo dikan-teny voalohany niasa dia hoe tany amin'ny tontolo hafa aho. Ny votoaty rehetra dia alaina avy amin'ny YouTube, fa tsy YouTube intsony ity, fa zavatra hafa, azo antoka sy voafehy, toy ny hoe naka centipede teo amin'ny masonao ianao ary napetranao tao anaty siny fitaratra. Ary momba ny soso-kevitra rehetra izany.