Кощейдің өлімі ұсыныстар тізімінде (YouTube-ды ыңғайлы және қауіпсіз ету мүмкін бе?)
Кіріспе қысқаша: жергілікті ойнату тізімдері, арналары және ұсыныстары бар Android үшін YouTube онлайн ойнатқышы туралы айтқым келеді.
Кеңейтілген кіріспе:
Біраз уақыт бұрын мен керемет қосымшаның авторы сияқты проблемаға тап болдым Арналардың ақ тізімі, және өзім үшін дәл осындай көзқарасты анықтадым: мен балама мультфильмдері бар планшетті немесе смартфонды мезгіл-мезгіл сыйлағым келеді, бірақ 2-3 рет басқаннан кейін тізімнің қай жерде болатынына мүлдем риза емеспін. стандартты қолданбалардағы ұсыныстардың - YouTube клиенттері - баланы қабылдайды.
Өкінішке орай, Channel Whitelist қолданбасын орнатқаннан кейін тағы бір прозалық, бірақ әлі де өлімге әкелетін кемшілік анықталды - NIH I (және, ең бастысы, менің ұлым) оның интерфейсін өте ыңғайлы емес деп тапты, әсіресе YouTube Kids ойнатқышын пайдалану әдетінен кейін.
Жалпы, біраз уақыттан кейін мен өзімді жүзеге асыруға дайын болдым. Біраз уақыттан кейін бірінші шығарылымға тег қою мүмкін болды.
Негізгі ерекшеліктері:
Таңдаулы арналар мен ойнату тізімдерін қосыңыз - олар жергілікті дерекқорда сақталады және индекстеледі
Қосылған ойнату тізімдерінде қажет болмаса, қажет емес бейнелерді өшіріңіз
Ұсыныстар тізімі қолданбаға қосылған арналар мен ойнату тізімдерінен ғана кездейсоқ түрде жасалады
Төменде толығырақ негізгі мүмкіндіктерге шолу, сонымен қатар Android қолданбасында YouTube бейнелерін Google API және веб орауыштарын пайдаланбай ойнату жолының кейбір техникалық мәліметтері берілген.
Негізгі экранда және ойнатқыш экранында: кездейсоқ емес арналардан кездейсоқ ұсыныстар
Жергілікті дерекқорда жылдам іздеу
=>
Жаңа арна немесе ойнату тізімін қосыңыз
Желіде аты бойынша іздеңіз немесе белгілі мекенжайды енгізіңіз. Арнаның немесе ойнату тізімінің бейнелерінің тізімі жергілікті дерекқорға сақталады, белгішелер кэштелмейді.
Динамикалық ойнату тізімі - іздеу нәтижелерін ойнату
=>
Бейне ұсыныстарында іздеу сұрауын қанағаттандыратын бейнелер ғана болады.
Сол сияқты, ойнату тізімінің параметрлерінен бейнені ашсаңыз, ұсыныстар тізімінде тек бір ойнату тізіміндегі бейнелер ғана пайда болады.
Ойнату тізімдері мен арналарды уақытша өшіріп, қайта қосуға болады
Назар аударыңыз: өшірілген ойнату тізіміндегі бейнелер де іздеу нәтижелерінен, көру тарихынан және таңдаулылар тізімінен жоғалады. Бірақ алаңдамаңыз, олар ойнату тізімі қайта қосылғаннан кейін бірден пайда болады.
Бейнені қара тізімге қосыңыз
Блокталған бейне ұсыныстарда, іздеу нәтижелерінде көрсетілмейді және таңдаулылар тізімінен және көру тарихынан жоғалады. Бейне ойнату тізімінің параметрлерінде әлі де көрінетін болады.
Қара тізімді қараңыз және қате бұғатталған элементтерді қайта қосыңыз: Параметрлер > тақырып мәзірі > Қара тізім
Таңдаулы бейнелер және көру тарихы
Ойнатқыш экранындағы таңдаулы бейнелер жоғарғы оң жақ бұрышта жұлдызшамен белгіленген.
Экран тақырыбындағы мәтінмәндік мәзірлер және галереялар мен тізімдерді ұзақ басыңыз
Көру экранында немесе кез келген тізімде бейненің немесе ойнату тізімінің атын немесе мекенжайын көшіріңіз.
Жылдам бастау - ұсынылған арналар мен ойнату тізімдерін қосыңыз
=>
Қолданба бірден жоғарыдағы скриншоттарға ұқсайды.
Қажет емес арналар мен ойнату тізімдерін параметрлерде өшіруге немесе жоюға болады.
Ол Google Play-де жоқ және жақын арада болмайды (Google API-ны айналып өтетін және олардың веб-сайттарын талдайтын қолданбаларға, соның ішінде аталған арналардың ақ тізімі немесе NewPipe ойнатқышы) тыйым салады)
Бір құрылғыдағы әртүрлі көздерден алынған әртүрлі нұсқалар арасында ауысу apk файлының әртүрлі қолтаңбаларына байланысты жұмыс істемейтінін есте сақтаңыз; жаңа көзден нұсқаны орнатпас бұрын, алдымен орнатылған нұсқаны деректермен бірге жоюыңыз керек - ойнату тізімінің кэші және шолу журналы (немесе деректерді беру жолын анықтаңыз).
Техникалық мәліметтер
Google/YouTube тіркелгісін қажет етпейді, сізге тек Интернет қажет, келесі кітапханаларды пайдаланады:
Кітапхана NewPipeExtractor - ойыншыны қолдау жобасы Жаңа құбыр, көрсетілген арна немесе ойнату тізімі үшін бейнелер тізімін жүктеп алуға, әйгілі бейне туралы толық ақпаратты жүктеп алуға (бейненің веб-бетінде не көрінеді), бейне белгішесінің мекенжайын алуға, сондай-ақ бейненің мекенжайын алуға мүмкіндік береді. ағын.
Ойнату тізімін жүктеу коды сәл қиын, сондықтан мен оны мұнда бермеймін, қызығушылық танытқандар үшін бастапқы кодты қараңыз, бұл негізінен сынып ContentLoader.
Жалпыға ортақ бейне бетінің мекенжайынан бейне ағынының мекенжайын қалай алуға болатынын және оны ойнатқышта ойнатуды көрейік.
Осыдан кейін сіз оны әлі де пайдалана алмайтыныңыз қызық, өйткені... мысалдар жоқ Downloader сыныбына шағымданады. Оны жобаға автоматтандырылған сынақтар каталогынан көшіруге болады NewPipeExtractor/extractor/src/test/java/org/schabi/newpipe/Downloader.java - 0.17.4 нұсқасы үшін жұмыс істейді (бұл бөлік кітапхананың жаңарақ нұсқасында қайта жасалған сияқты, бірақ біз әлі де тексеруіміз керек).
Бейне ағынының мекенжайын YouTube веб-сайтындағы бейне бетінің мекенжайы бойынша алыңыз:
Ойыншы болады экзоплейер Google-дың өзінен. Бұл YouTube сайтындағы веб-орам емес, бірақ кез келген бейнелерді ойнатуға арналған, өте икемді және теңшеуге болатын нақты енгізілген ойнатқыш. Сондай-ақ, дұрыс мекенжайды көрсетсеңіз, ол YouTube-тен бейне ағындарын ойната алады. Біз ағындық мекенжайды жаңа ғана алдық, сондықтан оны ойнатқышқа қалай жіберуге болатынын көрейік.
Біз ойнатқыш компонентін қолданба экранында орналастырудың барлық нюанстарын қарастырмаймыз (мысалдарды жоба веб-сайтында немесе кодта қарауға болады), біз тек ойнатқышта YouTube-тен бейнені ойнатуды қалай бастау керектігін қарастырамыз. жоғарыда алынған мекенжай:
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);
}
}
Белгілі мәселелер
Google/YouTube есептік жазбаңызға кіруді талап ететін жас шектеулері бар бейнелерді ойнатпайды
кеңес: мұндай бейнелерді қара тізімге қосыңыз немесе бейне авторынан қате орнатылған шектеуді алып тастауды сұраңыз.
Қызмет нөлдік ұзындықты қайтаратын кейбір таратылатын бейнелер ойнатылмайды (мұндай бейнелер үшін тізімдер мен галереядағы ұзақтық «[dur undef]» ретінде белгіленген)
Тікелей сілтемелер арқылы ғана қолжетімді бейнелер, тіпті пайдаланушының барлық бейнелерін жүктеп алсаңыз да, жергілікті ойнату тізіміне қосылмауы мүмкін.
Егер сіз логинді қажет етпейтін, шолғышта ойнатылатын, бірақ ойнатқышта ойнатпайтын жалпыға ортақ бейнені кездестірсеңіз, қате туралы есеп жіберіңіз (жаңа нұсқада мәселе шешілген болуы әбден мүмкін. NewPipeExtractor және сіз тек осы нұсқамен жинақты жаңартуыңыз керек, мысалы).
Интернет баяу болса (бірақ өшірілмесе) интерфейс баяулауы мүмкін.
Нәтижесінде,
Менің ұлым планшеттен Android қолданбаларын іске қоса алмайтын Samsung смарт теледидарына көшті. Сондықтан, ең жақсы ата-ана бақылауы әлі де жеке.
Бірақ қолданба мен оны өзім қолдана бастауға ыңғайлы болды. Алғашқы жұмыс нұсқаларынан алған әсерім басқа әлемде болдым. Барлық мазмұн YouTube-тен жүктеледі, бірақ бұл енді YouTube емес, басқа нәрсе, қауіпсіз және басқарылатын нәрсе, сіз қырықаяқты көзіңізден алып, оны шыны ыдысқа салғандай. Және бәрі ұсыныстарға қатысты.