Wideo i RasbperryPi

Wszystkie kroki na filmie:

Wprowadzenie,

Program uruchamiany na RasbperryPi do łączenia się z RemoteMe umożliwia streaming video z kamery podłączonej do naszego Rpi . Program wspiera dedykowane kamery do RPi podłączane przez taśmę do gniazda znajdującego się bezpośrednio  na płytce:

Znalezione obrazy dla zapytania kamera Rpi

Znalezione obrazy dla zapytania kamera Rpiitp

 

Streaming video odbywa się poprzez protokół WebRTC, co umożliwia przesyłanie obrazu praktycznie bez żadnych opóźnień do przeglądarki internetowej, nawet jeżeli przeglądarka internetowa i Rpi jest uruchomione w osobnych sieciach ( np przeglądarka jest uruchomiona na telefonie z internetem mobilnym) . Zalecam używanie przeglądarki Chrome (zwłaszcza w telefonie komórkowym, ponieważ ma najlepiej zaimplementowaną obsługę protokołu WebRTC). Więcej o protokole webRTC tutaj Chciałbym też podziękować Lyu Keun Chang za przykładowy kod implementacji WebRTC po stronie RPi. Narazie nie ma możliwości przesyłania razem z video dźwięku.

Przez ten sam kanał transmisji są też przesyłane akcje użytkownika – np kliknięcie przycisku na stronie obok wideo – dzięki temu opóźnienia w przesyle zdarzeń są minimalne – dlatego RemoteMe sprawdzi się w sterowaniu robotów z podglądem wideo.

Instalacja,

Program RemoteMe na RasbperryPi automatycznie wpiera przesyła wideo z kamerki ( oczywiście wcześniej trzeba go zainstalować opis tutaj  i oczywiście w raspi-config należy włączyć obsługę kamerki opis w jednym z kroków tutaj ) Po uruchomieniu ./runme.sh jesteśmy gotowi na odbieranie obrazu z kamery

Dodanie strony z podglądem z kamery,

Tworzymy Nową stronę internetową. Zakładka Devices -> New Device -> new WebPage

wpisujemy nazwę deviceId – ważne żeby był wybrany template componentStarter i dodajemy klikając submit.

Więcej o stronie internetowej tutaj

Następnie edytujemy plik index.html klikając na niego i wybierając “Edit with wizard” następnie insert Component w oknie które się pojawi wybieramy Component camera:

Dodatkowo możesz także dodać komponent status w konfiguracji włącz webscoekt i camera , pomoże Ci to zobaczyć status połączenia i ponownie uruchomić podgląd wideo w razie potrzeby.

więcej o komponentach tutaj

Po wstawieniu i zamknięciu otwieramy stronę w nowej zakładce “index.html” -> Open in new Tab. Jeżeli nasze RasbperryPi i strona internetowa znajdują się w tej samej sieci lokalnej, zobaczymy w przeglądarce obraz z naszej kamery:

Podgląd obrazu jeżeli RasberryPi i przeglądarka nie są w tej samej sieci lokalnej

Jeżeli nasza sieć lokalna jest za NAT’em do prawidłowego wyświetlania obrazu będzie potrzebne dodanie serwera TURN. Po przetesotwaniu kilku serwerów polecam serwer Turn firmy xirsys. Umożliwia on dodanie darwmoego serwera TURN (z pewnymi ograniczeniami)

Po zalogowaniu się dodajemy kanał:

Dane do naszego serwera turn znajdują się w “Static TURN Creditentials”:

będziemy je wklejać do pliku “webrtc_streamer.conf” w tym celu riwijamy belke naszego RasbperryPi w systemie RemoteMe, następnie klikamy na plik webrtc_streamer.conf i wybieramy opcję edit:

Uzupełniamy plik wpisując dane z systemy xirsys:

Po wklejeniu plik powinien wyglądać podobnie do:

jako serwer turn należy wybrać ten z portem 80 i protokołem udp. po zapisaniu i zrestartowaniu programu na RasbperryPi, przesył informacji będzie możliwy, nawet gdy urządzenia będą w innych sieciach.

Można wypróbować przez smartphona najwygodniej zeskanować link anonimowy, żeby nie musiać przepisywać adresu i logować się. Klikamy na index.html -> get anymous link -> klikamy w ikonkę kodu QR