ProHoster > Blog > internetes hírek > Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)
Koshchei halála szerepel az ajánlások listáján (lehetséges, hogy a YouTube hangulatos és biztonságos legyen?)
A bevezető rövid: szeretnék beszélni a YouTube online lejátszóról Androidra helyi lejátszási listákkal, csatornákkal és ajánlásokkal.
Bővített bemutatkozás:
Nemrég pontosan ugyanazzal a problémával találkoztam, mint egy csodálatos alkalmazás szerzője Csatorna fehérlista, és pontosan ezt a hozzáállást határoztam meg magamnak: szeretném, ha időnként adhatnék a gyerekemnek egy tabletet vagy okostelefont rajzfilmekkel, de egyáltalán nem vagyok elégedett azzal, hogy 2-3 kattintás után hol van a lista. ajánlások szabványos alkalmazásokban - YouTube kliensek - veszi a gyermeket.
Sajnos a Channel Whitelist alkalmazás telepítése után egy újabb prózaibb, de mégis végzetes hibát fedeztek fel - az NIH I (és ami a legfontosabb, a fiam) nem találta túl kényelmesnek a felületét, különösen a YouTube Kids lejátszó használatának megszokása után.
Általában egy idő után készen álltam a saját megvalósításra. Egy idő után lehetővé vált egy címke elhelyezése az első kiadáson.
Főbb jellemzők:
Adja hozzá kedvenc csatornáit és lejátszási listáit – a rendszer elmenti és indexeli őket a helyi adatbázisban
A hozzáadott lejátszási listákon belül kapcsold ki a szükségtelen videókat, ha nincs rájuk szükséged
Az ajánlások listája véletlenszerűen jön létre az alkalmazáshoz hozzáadott csatornákból és lejátszási listákból
Az alábbiakban a főbb funkciók részletesebb áttekintése található, valamint néhány technikai részlet arról, hogyan játszhat le YouTube-videókat Android-alkalmazásában a Google API és a webburkolók használata nélkül.
A főképernyőn és a lejátszó képernyőjén: véletlenszerű ajánlások nem véletlenszerű csatornákról
Azonnali keresés a helyi adatbázisban
=>
Új csatorna vagy lejátszási lista hozzáadása
Keressen név szerint az interneten, vagy írjon be egy ismert címet. A csatorna vagy lejátszási lista videóinak listája a helyi adatbázisba kerül, az ikonok nem tárolódnak a gyorsítótárban.
Dinamikus lejátszási lista – keresési eredmények lejátszása
=>
A videóajánlások között csak olyan videók jelennek meg, amelyek kielégítik a keresési lekérdezést.
Hasonlóképpen, ha megnyit egy videót a lejátszási lista beállításai közül, csak az azonos lejátszási listáról származó videók jelennek meg az ajánlások listájában.
A lejátszási listák és csatornák ideiglenesen kikapcsolhatók, majd újra bekapcsolhatók
Megjegyzés: a letiltott lejátszási listákról származó videók a keresési eredmények közül, a megtekintési előzményekből és a kedvencek listájából is eltűnnek. De ne aggódjon, a lejátszási lista ismételt bekapcsolása után azonnal újra megjelennek.
Videó hozzáadása a feketelistához
A letiltott videó nem jelenik meg az ajánlásokban, a keresési eredmények között, és eltűnik a kedvencek listájáról és a megtekintési előzményekből. A videó továbbra is látható lesz a lejátszási lista beállításaiban.
Tekintse meg a feketelistát, és engedélyezze újra a véletlenül blokkolt elemeket: Beállítások > fejléc menü > Feketelista
Kedvenc videók és megtekintési előzmények
A lejátszó képernyőjén a kedvenc videókat a jobb felső sarokban csillag jelzi.
Helyi menük a képernyő címében, és hosszú kattintás a galériákban és listákban
Másolja ki egy videó vagy lejátszási lista nevét vagy címét a megtekintési képernyőn vagy bármely listában.
Gyors kezdés – ajánlott csatornák és lejátszási listák hozzáadása
=>
Az alkalmazás azonnal úgy néz ki, mint a fenti képernyőképek.
A szükségtelen csatornák és lejátszási listák a beállításokban kikapcsolhatók vagy törölhetők.
Nem található meg a Google Playen, és a közeljövőben sem lesz elérhető (a Google letiltja azokat az alkalmazásokat, amelyek megkerülik az API-t és elemzik a webhelyüket, beleértve az említett Channel Whitelist vagy a NewPipe lejátszót)
Ne feledje, hogy a különböző forrásokból származó különböző verziók közötti váltás ugyanazon az eszközön nem fog működni az apk fájl eltérő aláírása miatt; mielőtt új forrásból telepítené a verziót, először törölnie kell a telepített verziót az adatokkal együtt - a lejátszási lista gyorsítótárát és a böngészési előzményeket (vagy találja ki az adatok átvitelének módját).
Műszaki részletek
Nem igényel Google/YouTube fiókot, csak internetre van szüksége, a következő könyvtárakat használja:
könyvtár Új PipeExtractor - játékos támogatási projekt NewPipe, lehetővé teszi egy videólista letöltését egy adott csatornához vagy lejátszási listához, részletes információk letöltését egy híres videóról (ami látható a videó weboldalán), lekérheti a videó ikon címét, és a videó címét is. folyam.
A lejátszási lista betöltésének kódja kicsit körülményes, ezért nem adom ide, akit érdekel, nézze meg a forráskódot, ez alapvetően egy osztály ContentLoader.
Nézzük meg, hogyan lehet a nyilvános videóoldal címéből lekérni egy videofolyam címét, és lejátszani a lejátszóban.
Érdekes, hogy ezután sem tudod majd használni, mert... példák panaszkodni fognak a hiányzó Downloader osztály miatt. Az automatizált tesztek könyvtárából átmásolható a projektbe NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - működik a 0.17.4-es verzióhoz (úgy tűnik, hogy ez a rész a könyvtár újabb verziójában lett újrakészítve, de még ellenőriznünk kell).
Szerezze meg a videofolyam címét a YouTube webhely videóoldalának címével:
A játékos lesz exoplayer magától a Google-tól. Ez nem egy webes wrapper a YouTube felett, hanem egy igazi beágyazott lejátszó bármilyen videó lejátszásához, meglehetősen rugalmas és testreszabható. A YouTube-ról származó videofolyamokat is le tudja játszani, ha megadja a megfelelő címet. Most kaptuk meg a stream címét, nézzük meg, hogyan küldjük el a lejátszónak.
Nem vesszük figyelembe a lejátszó komponens alkalmazás képernyőn való elhelyezésének minden árnyalatát (a példákat megtekintheti a projekt webhelyén vagy a kódban), csak azt nézzük meg, hogyan lehet elindítani egy videó lejátszását a YouTube-ról a lejátszóban: a fent kapott cím:
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);
}
}
ismert problémák
Nem játszik le olyan korhatáros videókat, amelyekhez be kell jelentkezni a Google/YouTube-fiókjába
tanács: vegye fel az ilyen videókat a tiltólistára, vagy kérje meg a videó szerzőjét, hogy távolítsa el a tévedésből beállított korlátozást.
Egyes sugárzott videók, amelyeknél a szolgáltatás nulla hosszt ad vissza, nem játszhatók le (az ilyen videók esetében a listákban és a galériában az időtartam „[dur undef]”-ként van megjelölve).
tanács: vegye fel az ilyen videókat a feketelistára.
Előfordulhat, hogy a csak közvetlen linkeken keresztül elérhető videók nem szerepelnek a helyi lejátszási listán, még akkor sem, ha letölti a felhasználó összes videóját
Ha olyan nyilvános videóra bukkan, amely nem igényel bejelentkezést, lejátszható a böngészőben, de nem játszik le a lejátszóban, küldjön hibajelentést (lehetséges, hogy a problémát már javították az új verzióban Új PipeExtractor és csak frissítenie kell az összeállítást ezzel a verzióval, például).
Az interfész lelassulhat, ha az internet lassú (de nincs kikapcsolva)
Ennek eredményeképpen,
A fiam táblagépről Samsung okostévére költözött, amely nem tud Android alkalmazásokat futtatni. Ezért a legjobb szülői felügyelet továbbra is személyes.
De az alkalmazás elég kényelmesnek bizonyult ahhoz, hogy magam is elkezdjem használni. A korai működő verziók első benyomása az volt, hogy egy másik világban vagyok. Minden tartalom a YouTube-ról van letöltve, de ez már nem YouTube, hanem valami más, biztonságos és ellenőrzött, mintha kiszednél egy százlábút a szemedből és egy üvegedénybe tennéd. És minden az ajánlásokon múlik.