tsev qiv ntawv NewPipeExtractor - player txhawb qhov project TshiabPipe, tso cai rau koj mus download tau ib daim ntawv teev cov yeeb yaj duab rau ib tug teev channel los yog playlist, download tau cov ncauj lus kom ntxaws txog ib tug nto moo video (dab tsi yog pom nyob rau hauv lub vev xaib video), tau qhov chaw nyob ntawm lub video icon, thiab kuj tau txais qhov chaw nyob ntawm cov yees duab. ntws.
Cov cai rau kev thauj cov playlist yog me ntsis cumbersome, yog li kuv yuav tsis muab nws ntawm no, rau cov neeg nyiam, saib ntawm qhov chaws, nws yog ib chav kawm. ContentLoader.
Cia peb saib yuav ua li cas kom tau txais qhov chaw nyob ntawm cov kwj video los ntawm qhov chaw nyob ntawm nplooj ntawv video pej xeem thiab ua si hauv cov neeg uas ua ntawv.
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;
}
Qhov chaw nyob video ytVidUrl tuaj yeem yog pej xeem chaw nyob ntawm nplooj ntawv ntawm ib qho yeeb yaj kiab ntawm YouTube lub vev xaib, piv txwv li https://www.youtube.com/watch?v=pd2RlatmNRk
Player yuav yog exoplayer los ntawm Google nws tus kheej. Qhov no tsis yog lub web wrapper tshaj YouTube, tab sis ib tug tiag tiag embedded player rau ua si tej yeeb yaj duab, heev saj zawg zog thiab customizable. Nws tseem tuaj yeem ua si cov yeeb yaj kiab los ntawm YouTube yog tias koj muab qhov chaw nyob kom raug. Peb nyuam qhuav tau txais qhov chaw nyob kwj, yog li cia saib yuav xa mus rau tus neeg ua si li cas.
Peb yuav tsis xav txog tag nrho cov nuances ntawm tso cov neeg ua si tivthaiv ntawm daim ntawv thov screen (koj tuaj yeem saib cov piv txwv ntawm lub vev xaib project lossis hauv cov cai), peb tsuas yog saib yuav ua li cas pib ua yeeb yaj kiab los ntawm YouTube hauv cov neeg uas ua ntawv ntawm qhov chaw nyob tau txais saum toj no:
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);
}
}
Paub Teeb Meem
Yuav tsis ua yeeb yaj kiab nrog kev txwv hnub nyoog uas yuav tsum tau nkag mus rau koj tus account Google/YouTube
tswv yim: ntxiv cov yeeb yaj duab zoo li no rau hauv daim ntawv teev npe dub lossis nug tus kws sau cov yeeb yaj kiab kom tshem tawm cov kev txwv uas tau teeb tsa ua yuam kev.
Qee cov vis dis aus tshaj tawm uas qhov kev pabcuam rov qab xoom ntev yuav tsis ua si (rau cov yeeb yaj kiab zoo li no, lub sijhawm nyob hauv cov npe thiab cov duab kos tau cim tias "[dur undef]")
Yog tias koj tuaj hla cov yeeb yaj kiab pej xeem uas tsis xav tau nkag mus, ua si hauv browser, tab sis tsis ua si hauv cov neeg uas ua ntawv, xa daim ntawv qhia txog kab mob (nws yog qhov ua tau tias qhov teeb meem twb tau kho nyob rau hauv lub tshiab version. NewPipeExtractor thiab koj tsuas yog yuav tsum tau hloov kho lub rooj sib txoos nrog cov version no, piv txwv).
Lub interface yuav qeeb yog tias Internet qeeb (tab sis tsis muab tua)
Thaum kawg
Kuv tus tub tsiv los ntawm lub ntsiav tshuaj mus rau Samsung ntse TV, uas tsis tuaj yeem khiav Android daim ntawv thov. Yog li ntawd, kev tswj xyuas niam txiv zoo tshaj plaws tseem yog tus kheej.
Tab sis daim ntawv thov tau ua kom yooj yim txaus rau kuv pib siv nws tus kheej. Thawj qhov kev xav los ntawm kev ua haujlwm thaum ntxov yog tias kuv nyob hauv lwm lub ntiaj teb. Tag nrho cov ntsiab lus yog rub tawm los ntawm YouTube, tab sis qhov no tsis yog YouTube lawm, tab sis ib yam dab tsi ntxiv, muaj kev nyab xeeb thiab tswj tau, zoo li yog tias koj coj ib tug centipede tawm ntawm koj lub qhov muag thiab muab tso rau hauv lub khob iav. Thiab nws yog txhua yam hais txog cov lus pom zoo.