Denne artikel forklarer, hvordan du bruger YouTube på tv (https://youtube.com/tv) på en Raspberry Pi og styrer den ved hjælp af YouTube-appen fra din mobilenhed, næsten som om du bruger en Chromecast.
Når du har konfigureret alt, vil du være i stand til at bruge cast-knappen fra YouTube-appen på din telefon til at oprette forbindelse til YouTube på tv, der kører på din Raspberry Pi (ved hjælp af Chromium-webbrowser i kiosktilstand), og bruge din telefon som en YouTube fjernbetjening. Du vil være i stand til at afspille videoer, tilføje videoer til køen, ændre lydstyrken ved hjælp af telefonens lydstyrketaster osv. Også flere telefoner (så flere brugere) kan forbinde, afspille og tilføje videoer til køen på samme tid.
Bemærk, at jeg kun har testet dette med Android-telefoner, så jeg er ikke sikker på, om det også virker med iOS. Det burde den nok, men jeg ejer ingen iOS-enheder.
Vigtig note. Du må ikke forveksle YouTube på TV (https://youtube.com/tv) med YouTube TV (https://tv.youtube.com). "YouTube on TV" eller "YouTube for TV" er en YouTube-webgrænseflade designet til smart-tv'er, og det er det, vi kommer til at bruge på en Raspberry Pi, mens YouTube TV er en streaming-tv-tjeneste, der tilbyder live-tv og på -efterspørgsel video.
Brug af YouTube på tv på en Raspberry Pi har en del fordele i forhold til at bruge en Chromecast, men også nogle ulemper.
Fordele ved at bruge YouTube på tv (https://youtube.com/tv) på en Raspberry Pi i stedet for en Chromecast (jeg er ikke sikker på, om alt gælder for den nyeste Chromecast, jeg har den ældre Chromecast Ultra):
- Du kan bruge en annonceblokering som Ublock Origin (leveres forudinstalleret med Chromium-browseren på Raspberry Pi OS) – ingen flere annoncer på YouTube (nej, Pi-hullet er ikke pålideligt til at blokere YouTube-annoncer, tro mig, jeg har prøvet)
- YouTube-appen på din telefon afbryder ikke forbindelsen til YouTube på tv efter en periode med inaktivitet
- YouTube-appen lukker ikke efter en periode med inaktivitet, så videoer, der er sat på pause, forbliver på skærmen på ubestemt tid
- Du kan navigere gennem YouTube på TV-appen fra din telefon (efter at have oprettet forbindelse til YouTube på TV med din mobilenhed, klik på cast-ikonet, og du får en fjernbetjeningsknap, som gør det muligt at navigere gennem videoerne, ændre videoindstillingerne osv. )
- Du kan ændre videokvaliteten (hvilket ikke er muligt på en Chromecast) ved hjælp af den fjernbetjening, jeg nævnte ovenfor
- Du bør være i stand til at gennemse YouTube på tv-grænsefladen ved hjælp af dit tv's fjernbetjening, så længe tv'et understøtter CEC, ved at bruge cec-client. Dette kræver nogle justeringer, og jeg er ikke nået til at gøre det endnu. Sådan tænder/slukker du for eksempel et tv tilsluttet via HDMI-CEC.
Ulemper ved at bruge YouTube på tv på en Raspberry Pi i stedet for en Chromecast:
- Brug af YouTube på tv på en Raspberry Pi er åbenbart ... kun for YouTube, mens en Chromecast understøtter mange andre lyd- og videoplatforme. Dette er en stor ulempe, hvis du bruger mange andre lyd-/videoplatforme, men hvis du kun vil have dette til YouTube, er det et godt alternativ at bruge YouTube på tv på en Raspberry Pi
- Videokvaliteten kan være lavere. Ved at bruge h264ify-udvidelsen (installeret som standard på Raspberry Pi OS; påkrævet til hardware-accelereret videoafspilning på YouTube) får du en maksimal videokvalitet på 1080p30. Uden denne udvidelse får du op til 4K-videoer (men de spillede ikke ordentligt på min Raspberry Pi 4). Også ved brug af YouTube på tv på en Raspberry Pi, hvis en video kun er 1080p60, nedgraderes videoen til 720p60
- Første gang du tilslutter en telefon til YouTube på TV, skal du indtaste en pinkode, og til dette skal du bruge en mus (eller noget software til at emulere en mus fra din telefon eller skrivebord) på din Raspberry Pi for at komme til pin side. Når en telefon er forbundet med en pin, fungerer den ligesom en Chromecast
Dette er alle de fordele og ulemper, jeg kunne komme i tanke om, men der kan være andre. Det afhænger virkelig af, hvordan du bruger dette, og hvad du vil have ud af det.
Det er vigtigt at bemærke, at for at teste alt dette, har jeg brugt en Raspberry Pi 4 med Raspberry Pi OS. Ikke alt fra instruktionerne nedenfor vil virke, hvis du bruger en anden Linux-distribution (f.eks. vil det ikke være det samme at tilføje programmer til opstart). Jeg er ikke sikker på, hvor godt ældre Raspberry Pi-modeller er i stand til at afspille YouTube-videoer. Du behøver heller ikke bruge dette på en Raspberry Pi – du kan bruge på en hvilken som helst computer, der kører Linux, men nogle dele af instruktionerne nedenfor vil ikke fungere nøjagtigt på samme måde.
Konfigurer YouTube på tv (https://youtube.com/tv) med Chromium for at starte ved opstart på din Raspberry Pi
1. Installer Chrome-udvidelsen YouTube TV på pc i Chromium-browseren.
Du kan få udvidelsen fraChrome Webshop.
Som standard omdirigeres et besøg på https://youtube.com/tv på en anden enhed end et tv til det almindelige YouTube-websted. Det ser ud til, at Google virkelig ikke vil have os til at bruge dette på andet end et tv på grund af ... sandsynligvis annonceblokkere.
Brug af en tv-brugeragent løser dette, men videoerne er 720p. Ved at bruge YouTube TV på pc-udvidelsen stopper https://youtube.com/tv med at omdirigere til det almindelige YouTube, mens det også tillader videoer med en kvalitet, der er højere end 720p. Vi skal stadig bruge en brugeragent, når vi starter Chromium i kiosktilstand, fordi den af en eller anden grund omgår denne udvidelses brugeragent (dette sker ikke, når den startes uden kiosk eller fuldskærmstilstand), men ved at bruge denne vil få videoer i højere kvalitet.
2. Opret et script, der starter Chromium-browseren i kiosktilstand og indlæser https://youtube.com/tv med nogle indstillinger for at optimere det til brug med YouTube på TV.
Lav et script, lad os kalde detyt
, i~/.local/bin
.
For at sikre, at~/.local/bin
mappe eksisterer (og opret den, hvis den ikke gør det), kør denne kommando:
mkdir -p ~/.local/bin
Opret nu en fil kaldetyt
i~/.local/bin
, og åbn den med en teksteditor. Vi bruger Nano kommandolinjeteksteditor til at åbne den ved hjælp af følgende kommando:
nano ~/.local/bin/yt
Indsæt følgende i denne fil:
#!/bin/bash
sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' ~/.config/chromium/Default/Preferences
sed -i 's/"exit_type": "Crashed"/"exit_type": "None"/' ~/.config/chromium/Default/Preferences
sleep 5; chromium-browser --autoplay-policy=no-user-gesture-required --enable-extensions --user-agent="Mozilla/5.0(SMART-TV; Linux; Tizen 4.0.0.2) AppleWebkit/605.1.15 (KHTML, like Gecko) SamsungBrowser/9.2 TV Safari/605.1.15" --kiosk "https://www.youtube.com/tv" >/dev/null 2>&1 &
Her er hvad dette gør:
- den 2
sed
kommandoer (viaRaspberry Pi StackExchange) ændre ChromiumPreferences
fil, som om Chromium afsluttede rent, hvis browseren faktisk ikke afsluttede rent. På denne måde får du ikke sessionsgendannelses-pop-up'et, hvis browseren går ned, din strøm går ud osv. Jeg er ikke sikker på, om dette virkelig er nødvendigt, når du starter Chromium i kiosktilstand, men jeg synes, det er bedre at have dette i scriptet, så Chromium ikke starter korrekt - sidste linje:
sleep 5
bruges til at vente 5 sekunder, før du starter Chromium-browseren. Vi vil tilføje dette script til opstart, så vi venter 5 sekunder, før vi starter Chromium, så Raspberry Pi har tid nok til at oprette forbindelse til internettet. Hvis det tager længere tid for dig, skal du ændre søvnværdien her- derefter starter vi Chromium ved at bruge følgende muligheder:
--autoplay-policy=no-user-gesture-required
: dette giver Chromium mulighed for at autostarte videoen. Uden dette skal du manuelt starte den første video efter en Chromium-genstart, og dette kan ikke gøres fra YouTube-appen, så du skal bruge et tastatur til at gøre dette, eller sende en nøgle ved hjælp af noget som f.eks.xdotool
--enable-extensions
: selvforklarende – det tillader indlæsning af udvidelser, såsom YouTube TV på pc-udvidelsen, UBlock Origin, h264ify osv.--user-agent="Mozilla/5.0(SMART-TV; Linux; Tizen 4.0.0.2) AppleWebkit/605.1.15 (KHTML, like Gecko) SamsungBrowser/9.2 TV Safari/605.1.15"
: Selvom vi bruger Chrome-udvidelsen YouTube TV på PC, hvis Chromium starter i fuldskærms-/kiosktilstand, omdirigeres den stadig til den almindelige YouTube-webstedsgrænseflade. Så vi bruger en tv-brugeragent til at få YouTube til at blive påhttps://youtube.com/tv
--kiosk
: kører Chromium i kiosktilstand. Dette får den til at starte i fuld skærm og deaktiverer nogle popus, såsom oversæt popup osv."https://www.youtube.com/tv"
: dette er den URL, vi vil åbne, når Chromium starter>/dev/null 2>&1
omdirigerer STDOUT og STDERR, så du ikke ser noget output i terminalen, hvis du kører dette manuelt, og&
holder applikationen kørende
3. Tilføj vores nye script til opstart.
Start med at lave det nyeyt
script eksekverbar:
chmod +x ~/.local/bin/yt
Rediger derefter Raspberry Pi OS autostart-filen (~/.config/lxsession/LXDE-pi/autostart
) ved hjælp af en teksteditor – ved at bruge kommandoen nedenfor åbner vi den ved hjælp af Nano kommandolinjeeditor:
nano ~/.config/lxsession/LXDE-pi/autostart
Tilføj følgende linje i denne fil for at autostarteyt
manuskript:
@bash /home/pi/.local/bin/yt
Når du er færdig, skal du gemme filen (brugCtrl + O
, derefterEnter
for at gemme den, efterfulgt afCtrl + X
for at afslutte Nano).
Det er vigtigt at bemærke, at vi ikke kan bruge~/.local/bin/yt
i autostart-filen. Vi skal bruge den fulde vej tilyt
manuskript. Så hvis stien er anderledes (du bruger ikke standardenpi
bruger), juster dette til dit system/brugernavn.
4. Start Chromium med YouTube på tv for første gang.
Chromium med YouTube på TV starter automatisk ved opstart. Men da vi ikke ønsker at genstarte bare for at starte den, kan vi starte den manuelt. Luk alle kørende Chromium-browservinduer, åbn derefter en terminal, og skriv:
~/.local/bin/yt &
5. Par din telefon med YouTube på TV, der kører på Raspberry Pi.
Med Chromium-browseren kørende og https://www.youtube.com/tv åben på din Raspberry Pi, gå til indstillinger (gearikonet nederst til venstre), og klik derefter påLink with TV code
, og du vil se en kode på dit tv's skærm:
Åbn nu YouTube-appen på din telefon, klik på cast-ikonet øverst i appen, og du får en mulighed, der sigerLink with TV code
Klik på dette og indtast koden, du ser på dit tv:
KlikLink
efter indtastning af koden, og du er færdig! Du kan oprette forbindelse til YouTube på tv, der kører på din Raspberry Pi og caste YouTube-videoer fra din telefon til den ved at oprette forbindelse til den nyligt tilføjede enhed:
Dette får YouTube på TV op at køre på din Raspberry Pi. Men udover dette bruger jeg også nogle tweaks / optimeringer, som du måske også vil bruge. Se nedenfor for detaljer.
Optimeringer / tweaks til brug af YouTube på TV via Chromium på Raspberry Pi
1. Aktiver hardwareacceleration i Chromium-browseren, der kører på Raspberry Pi.
Dette er nok den vigtigste optimering/tweak. Ved at bruge dette skal YouTube-videoer bruge meget mindre CPU, mens du holder din Raspberry Pi køligere. Tjek følgende artikel fra Linux Uprising for nøjagtige instruktioner:
Sådan aktiveres hardwareacceleration i Chromium på Raspberry Pi OS
2. Skjul musemarkøren automatisk, når den er inaktiv.
Musemarkøren vises øverst på YouTube på TV. For at få det til at skjule automatisk, bruger jegunclutter-xfixes, en omskrivning af det populæreunclutter
værktøj, men ved at bruge x11-xfixes-udvidelsen (og med nogle forbedringer). Du kan også bruge den originale unclutter (det er i depoterne), men jeg foretrækker personligt denne gaffel. Bemærk, at deres brug ikke er det samme, så hvis du vil bruge det originale ryddeligt, seher.
For at installere unclutter-xfixes, installer Git, hvis du ikke allerede har gjort det, samt unclutter-xfixes-afhængighederne:
sudo apt install git libx11-dev libxfixes-dev libxi-dev libev-dev asciidoc
Derefter skal du klone unclutter-xfixes GitHub-depotet, bygge og installere værktøjet:
git clone https://github.com/Airblader/unclutter-xfixes
cd unclutter-xfixes
make
sudo make install
For at automatisk skjule musemarkøren, når den er inaktiv, skal du tilføjeunclutter -b
til opstart. For at gøre dette skal du åbne Raspberry Pi OS autostart-filen med en teksteditor – vi bruger Nano-konsollens teksteditor nedenfor:
nano ~/.config/lxsession/LXDE-pi/autostart
Tilføj i slutningen af filen:
@unclutter -b
Når du er færdig, skal du gemme filen (brugCtrl + O
, derefterEnter
for at gemme den, efterfulgt afCtrl + X
for at afslutte Nano). Eller vent og gem det efter næste trin, da vi tilføjer endnu en kommando til autostart.
3. Deaktiver skærmblanking
For at deaktivere skærmblankning skal vi igen tilføje en kommando til autostart-filen. Så åbn~/.config/lxsession/LXDE-pi/autostart
fil med Nano:
nano ~/.config/lxsession/LXDE-pi/autostart
Og i slutningen af filen skal du tilføje:
@xset -dpms s off
Og til sidst, gem filen (brugCtrl + O
, derefterEnter
for at gemme den, efterfulgt afCtrl + X
At forlade).
4. Installer Profile Sync Daemon for at indlæse Chromium-profilen i tmpfs (RAM).
Profil Sync Daemoner et værktøj til at holde din browserprofil i tmpfs og periodisk synkronisere den tilbage til din fysiske disk. Dette fremskynder Chromium, samtidig med at der bliver færre skrivninger til disken, så dit Raspberry Pi's sdcard/USB holder længere. Brug dette, hvis din Raspberry Pi har nok RAM.
Installer det ved hjælp af:
sudo apt install profile-sync-daemon
Kør derefter PSD for første gang for at oprette brugerkonfigurationsfilen:
psd
Rediger nu PSD-konfigurationsfilen ved hjælp af en teksteditor, f.eks. Nano:
nano ~/.config/psd/psd.conf
Fjern kommentarer i denne filBROWSERS
linje, og tilføjchromium
til det, så det ser sådan ud:
BROWSERS="chromium"
Nu kan du aktivere og starte PSD:
systemctl --user enable psdsystemctl --user start psd
[[Redigere]]Chromium og et par andre browserehar deres cache gemt et andet sted end browserprofilen. Så lad os også indlæse Chromium-cachen i RAM (ved hjælp af tmpfs) ved at redigere/etc/fstab
ved hjælp af Nano konsol editor:
sudo nano /etc/fstab
Og tilføjer følgende linje til filen (rediger ikke andet, en dårlig fstab-fil betyder, at din Pi ikke længere vil starte):
tmpfs /home/pi/.cache/chromium tmpfs user,exec,uid=1000,gid=1000,size=500m 0 0
Redigersize
værdi med den mængde MB, du vil bruge til Chromium-cachen, der er gemt i RAM. Jeg bruger 500 her, men du vil måske bruge en anden værdi, afhængigt af mængden af tilgængelig RAM til din Raspberry Pi.
Jeg har også deaktiveret swap på min Raspberry Pi for at minimere diskskrivning, men jeg er ikke sikker på, om det er så god en idé, så jeg tilføjer ikke instruktioner til det her. Du kan finde ud af, hvordan du gør dette med en simpel søgning.