WebRTC - płynne wideo i audio w aplikacji webowej

WebRTC - płynne wideo i audio w aplikacji webowej

O WebRTC

WebRTC wykorzystuje bezpośrednią komunikację klienta (np. przeglądarki internetowej) z kamerą.

Bramka AIS dom, mogła by skonfigurować połączenie przeglądarki z kamerą, a następnie przeglądarka i kamera komunikowały by się bezpośrednio (nie obciążając bramki).
To byłoby świetnie rozwiązanie… gdyby nie jeden problem… mało która kamera obsługuje WebRTC.

Zainspirowani tym co zrobiło Ubiquiti Oferta PRO | AI-Speaker
Szukaliśmy rozwiązania OpenSource, które pozwoli na przerabianie wideo z RTSP na WebRTC - tak żeby w aplikacji webowej mieć jednocześnie obraz i dźwięk z kamer i żeby ten obraz był z mniejszym opóźnieniem.

RTSPtoWeb

Okazuje się, że jest cos takiego, napisał to sprytny rosyjski programista Andrey… ach te Andrusze :kissing_heart:

rozwiązanie jest napisane w języku GO, który mamy na bramce:

Chwilę się tym pobawiliśmy i wydaje się, że to jest przyszłość.
Efekt w porównaniu z ffmpeg robi wrażenie (oczywiście nie aż takie jak monitorig Ubiquiti: Oferta PRO | AI-Speaker) ale jest o wiele lepiej niż obecne rozwiązanie oparte na ffmpeg.

Mamy w planie dodać nowe demo systemu AIS, bo po przeprowadzce nie mieliśmy czasu jeszcze podłączyć urządzeń. Na dom-demo sprawdzimy “w praniu” to rozwiązanie z WebRTC.

Opis techniczny, dla tych którzy by chcieli sprawdzić jak to działa na bramce

:warning: To jest opis dla zaawansowanych użytkowników. Jeżeli ta metoda, sprawdzi się na naszych testach, to z czasem dodamy to rozwiązanie do bramek w formie integracji z aplikacji. Jeżeli konsola nie jest ci znana i nie wykonywałeś hello.go z wcześniejszego opisu, to możesz mieć kłopoty z instalacją RTSPtoWeb.

W konsoli na bramce wpisujemy:

cd ~
git clone https://github.com/deepch/RTSPtoWeb
GO111MODULE=on go run *.go

teraz w przeglądarce wchodzimy na:

http://<ip-bramki>:8083/

dodajemy nowy stream

i możemy go uruchomić w WebRTC:

mamy płynny obraz :tada:

a teraz klikamy w

albo wchodzimy na adres:

http://<ip-bramki>:8083/pages/multiview/full?grid=5#

i mamy siatkę z kamerami:

4 polubienia

Przeciez o tym pisałem w poście kamery RTSP :slight_smile: że WEBRTC nie ma opóźnień.na kamerach pierwszy byłem hehe

3 polubienia

To zaczynamy na DEV1 - w końcu dla takich eksperymentów ją zostawiłem :grin:

2 polubienia

Daj znać jak pójdzie.
Ciekawe czy można by zrobić tak żeby każda kamera była w innej karcie :slightly_smiling_face:

Ale sądzę że może to odciążyć bramki :slightly_smiling_face:

Spokojnie… nie mam za bardzo co dodawać, bo moje kamerki no name nie idą. Program się wyłożył przy próbie dodania struienia:

Czyli w weekend próba z imou :slightly_smiling_face:
Kamery maja onvif więc chyba ruszy to :slightly_smiling_face:

Dahua działa, ale to było już stwierdzone wcześniej…

BTW
Onvif nie ma tu nic do rzeczy…

Muszę to sprawdzić na dev1 :slightly_smiling_face:
Mam nadzieję że jakoś rusza kamery :slightly_smiling_face:
Zastanawiam się czy na dev1 nie postawić bazy danych i właśnie webrtc :slightly_smiling_face:

Nie obciąża to bramki ani GPU ani cpu

hehe gratulacje :tada: :wink:

troszke obciąża CPU, bo coś tam ten kod w Go, konwertuje z RTSP do WebRTC:

niestety nie działa dzwięk:

za:

Może i racja

śr., 24 lis 2021, 14:31 użytkownik Jolka z AI-Speaker <ai_speaker@discoursemail.com> napisał:

do tego momentu poszło. Ale jak wpisze adres:8083 niestety strona się nie otwiera.

1 polubienie

Musisz startować z katalogu

~/RTSPtoWeb

1 polubienie

Witam.
Pokazuje w konsoli, że nie mam czegoś zainstalowanego.

Ta konsola ma moce Super Krowy.            
~ $ cd RSTtoWeb
bash: cd: RSTtoWeb: No such file or directory
~ $ cd RTSPtoWeb
~/RTSPtoWeb $ GO111MODULE=on go run *.go
The program go is not installed. Install it by executing:
 apt install golang
~/RTSPtoWeb $ cd
~ $ git clone https://github.com/deepch/RTSPtoWeb
GO111MODULE=on go run *.go
fatal: destination path 'RTSPtoWeb' already exists and is not an empty directory.
The program go is not installed. Install it by executing:
 apt install golang
~ $ GO111MODULE=on go run *.go
The program go is not installed. Install it by executing:
 apt install golang

Pokazuje w konsoli czego nie ma zainstalowanego. Pokazuje w konsoli jak to zainstalować. Więc jeśli na takim etapie nie wiesz co robić, to raczej nie powinieneś instalować dodatków i pakietów sam z konsoli.

Oki, dzięki już instaluję. Wszystko śmiga.
Dzięki

@jolka - może już natrafiliście na ten projekt… ale myślę, że może zainspirować. Brak audio, jak dla mnie nie jest to problem przy funkcjonalności NVR. Może zastąpić czymś innym Live555 proxy server?
Projekt mnie bardzo zaciekawił.

1 polubienie

@jolka - a może takie rozwiązanie z wolną licencją:

https://www.kurento.org/

https://doc-webrtcpeer-android.readthedocs.io/en/latest/

Przykład wykorzystania:

A może rozwidlenie:

https://openvidu.io/

https://docs.openvidu.io/en/stable/advanced-features/ip-cameras/

A może z komunikacją MQTT:

Edit

WebRTC jako oficjalnie integrowany z HA:

3 polubienia

Totalna nowość - The RTSPtoWebRTC integration was introduced in Home Assistant 2022.2.

1 polubienie