İnternet pencereler Android

ip kameralar için rtsp protokolü. WebRTC kullanarak bir IP kameradan video akışı yayınlama

Ürününüzü kurmakta veya kullanmakta zorluk yaşıyorsanız, lütfen SSS ve SSS bölümlerimize bakın.


REVISOR VMS hediye lisansı nasıl alınır?

Revisor VMS hediye lisansı almak için talimatları izleyin. Talimatları indirin.


1.3 MP RedLine IP kameram var. ActiveX yüklemeye çalışıyorum ancak "HTTP 404 - Bulunamadı" hatası alıyorum, ne yapmalıyım?

1.3 megapiksel video kameralarda ActiveX modülü yerleşik değildir, kit ile birlikte gelen diskten kurulmalı veya linkten indirilmelidir.

4MP kameralar için:

rtsp://admin:123456@IP-address:554/ch01/0 - ana konu

rtsp://admin:123456@IP-address:554/ch01/1 - ek akış

rtsp://admin:123456@IP-address:554/streaming/mjpeg - mjpeg akışı

1,3 MP ve 2 MP kameralar için

rtsp://admin:123456@IP-address:554/streaming/video0 - ana akış

rtsp://admin:123456@IP-address:554/streaming/video1 - ek akış

Mobil cihazlar için hangi yazılım uygundur?

Ağ üzerinden çalışmak için hangi bağlantı noktaları gereklidir?

80 - web arayüzü

554-rtsp (video) akışı

4900 - mafya. liman

9988 - 4MP IP kameralara istemci bağlantıları için

Kayıt cihazında veya üçüncü taraf yazılımlarda ses çalışmıyorsa ne yapmalıyım?


Sesi iletmek için, AĞ sekmesi - RTSP akışındaki ayarlarda ses iletimini etkinleştirmeniz gerekir.

Kullanılan alan miktarı, seçilen kayıt kalitesine ve hareket frekansına bağlıdır (algılama ile kayıt yaparken). Arşivi hesaplamak için Disk hesap makinesi yazılımını kullanabilirsiniz.

Yerel bir ağda bir IP kamera nasıl bulunur?

Yazılımı yükleyin ve yönetici olarak çalıştırın. Görünen pencerede, yerel ağa bağlı ekipmanların bir listesini göreceksiniz.

Ağ ayarlarını değiştirmek için üst alanda ekipmanı seçin ve alt alanda ağ ayarlarını (IP adresi, maske, ağ geçidi) belirtin, kullanıcı adını, şifreyi girin ve Değiştir düğmesine tıklayın. Gelecekte, bağlanmak için belirtilen IP'yi kullanmalısınız.

.

1,3 MP ve 2 MP IP kameralar için kullanılması tavsiye edilir

CVMS'ye 1.3 MP IP kamera nasıl eklenir?

Kamera yerel ağdaysa, görüntüleme modunda, Cihazlar menüsünde (solda), sağ tıklayın ve "Hızlı arama"yı seçin, ardından istenen kamerayı seçin ve şifreyi belirtin.

Bağlantı internet üzerinden yapılacaksa, görüntüleme modunda Cihazlar menüsünde (solda) sağ tıklayın ve "Cihaz ekle" seçeneğini seçin ve bağlantı için verileri girin, TCP PORTU BELİRTİLMELİDİR (varsayılan 1115)

CCTV kamerayla birlikte gelen kılavuz, cihazın çalıştığı RTSP protokolü hakkında her zaman bilgi içermeyebilir. Ancak, bu protokolü kullanmanın gerekli olduğu çok sayıda durum vardır, bu nedenle adresini bulmak gerekli hale gelir.

Bir video gözetim sisteminin sahibinin çeşitli durumlarda RTSP akışını bilmesi gerekebilir:

  • video kamerayı bulut sunucusuna bağlamak için;
  • video bilgilerinin web sitesine iletimini ayarlamak;
  • cep telefonu, dizüstü bilgisayar veya tablet gibi farklı cihazlarda oynatıcı akışında video oynatmak için.

RTSP protokolü ne için?

RTSP protokolünün adı çevrimiçi kontrol anlamına gelir. Böylece, Gerçek Zamanlı Akış Protokolü, çevrimiçi video akışının yönetilmesine yardımcı olur. Bu protokol, gerekli komutların açıklamasını içerdiğinden, IP video gözetiminde çok sık kullanılır.

RTSP protokolü, güvenlik kamerası sahibinin birkaç önemli işlevi çözmesine olanak tanır:

  • VLC kullanarak veri yayınlamak;
  • kaynaklarınıza ve platformlarınıza video yayınlayın;
  • NVR-video kayıt cihazlarını yapılandırın;
  • sanal depolama ile bir güvenlik kamerası bağlayın;
  • Android veya iOS tabanlı mobil uygulamalara bir video kamera ekleyin.

Aynı zamanda, birçok video gözetim sistemi kullanıcısı için bir RTSP akışını açmak çok kolay ve oldukça zor değildir.

Güvenlik kamerasının RTSP adresini öğrenin

İlgili talimatlarda belirtilmediğinde, video kameranın RTSP akışını bulmanızı sağlayan birkaç seçenek vardır.

Rusya'da satılan çok sayıda IP kamera, Çin XMEye öğelerini içerir. Bu bileşenler Vesta, HiQ, SVplus ve benzerleri gibi yerli kamera üreticilerinde bile görülebilir. Bu tür modellerin kamerası aşağıdaki RTSP akış formatına sahip olacaktır:

rtsp://192.168.132.32:554/user=admin&password=12345&channel=1&stream=0.cgi

Bu adres aşağıdaki gibi bileşenleri içerir:

  • 192.168.132.32 – doğrudan cihaz IP adresi;
  • 554 – protokol bağlantı noktası (varsayılan olarak 554 numarasına sahiptir, ancak bu parametre cihaz ayarlarında değiştirilebilir);
  • yönetici - gözetleme kamerasının oturum açması;
  • 12355 – kullanıcı oturum açma şifresi.

IP video kamerada başka bileşenlerin bulunması durumunda, aşağıda listelenen iki seçenekten birini kullanmanız gerekecektir.

İlk seçenek en basitleştirilmiş olanıdır. Bir gözetleme kamerasından RTSP akışını öğrenmek için bu cihazın üreticisi veya tedarikçisiyle iletişime geçmeniz gerekir. Talep üzerine, istenen akışın formatını sağlayabilecekler ve Çinli satıcılar bile bu hizmeti Çin'deki fabrikalardan veya AliExpress web sitesinden sağlayabilir.

İkinci seçenek, özel yazılım kullanmaktır. Bu yöntem, video gözetim sisteminin sahibi olmayan birinin sağlayıcıdan RTSP akışının adresini talep etme yeteneği veya isteği olmadığında yardımcı olabilir. Daha sonra yazılımın yardımıyla kendiniz yapabilirsiniz.

Öncelikle One Device Manager adlı bir programı indirmeniz gerekecek. Kurulumdan sonra, bu yazılım RTSP adresini bulmanıza yardımcı olacaktır.

Kural olarak, çoğu video kamera onvif protokolünü destekler, bu nedenle yazılımı kullanırken herhangi bir zorluk olmamalıdır. Önemli bir nüans - düzgün çalışması için, programın yükleneceği bir dizüstü bilgisayarı veya bilgisayarı ve ayrıca IP cihazının kendisini aynı yerel ağa bağlamanız gerekir.

Web'de, RTSP akışlarının adreslerini içeren tüm listeleri bulabilirsiniz, çünkü bu veriler hangi markanın video gözetim kamerasını ürettiğine bağlıdır.

Video kamerada RTSP akışı nasıl açılır?

RTSP akışının adresi izleme sisteminin sahibi tarafından bilindiğinde, IP kameradan video bilgisi alabilir. Bir akışlı video yayınını açmak için aşağıdaki adım listesini gerçekleştirmeniz gerekir:

  • video kamera için kalıcı bir IP adresi belirleyin ve bunu bir İnternet sağlayıcısından sipariş edin;
  • video kameradan gelen yerel istekleri RTSP bağlantı noktasına aktarın;
  • bir performans testi geçmek.

IP Hunter programı kullanılarak statik bir adres yapılandırılabilir veya ISP'nizle iletişime geçerek ek bir seçenek olarak kalıcı bir IP adresi sağlamalarını isteyebilirsiniz. Bundan sonra, video kameranın yerel bağlantı noktalarından RTSP bağlantı noktasına yönlendirme ve iletme bağlantı noktaları ayarlamanız gerekir. Ardından akışı kontrol etmeye devam edebilirsiniz.

RTSP bağlantısının çalışıp çalışmadığını anlamak için VLC oynatıcıyı açıp oradan kontrol edebilirsiniz. Bunu yapmak için oynatıcının ana menüsünde "Medya" kategorisine tıklamanız ve "URL Aç" öğesini seçmeniz gerekir. Ardından, "Kaynak" penceresinin "Ağ" sekmesine gitmeniz ve bağlantınızı belirtmeniz gerekir.

Bir IP kameradan çevrimiçi yayın yapma sorununu çözmek, genel olarak WebRTC kullanımını gerektirmez. Kameranın kendisi bir sunucudur, bir IP adresine sahiptir ve video içeriğini dağıtmak için doğrudan bir yönlendiriciye bağlanabilir. Öyleyse neden WebRTC teknolojisini kullanıyorsunuz?

Bunun en az iki nedeni var:

1. Bir Ethernet yayınının izleyici sayısı arttıkça, önce kanal kalınlığı, ardından da kameranın kendi kaynakları giderek artan bir kıtlık olacaktır.

2. Yukarıda belirtildiği gibi IP kamera bir sunucudur. Ancak videoyu masaüstü tarayıcısına hangi protokollerle verebilecek? Mobil cihaz? Büyük olasılıkla, video karelerinin veya JPEG resimlerinin HTTP aracılığıyla iletildiği HTTP akışı olacaktır. HTTP akışı, herkesin bildiği gibi gerçek zamanlı video akışı için pek uygun değildir, ancak akış etkileşiminin ve gecikmenin özellikle önemli olmadığı isteğe bağlı videoda iyi çalışır. Aslında, bir film izliyorsanız, videoyu birkaç saniye geciktirmek, filmi başka biriyle aynı anda izlemiyorsanız, videoyu daha da kötüleştirmez. "Oh hayır! Jack onu öldürdü! - Alice, trajik sondan 10 saniye önce Bob'a sohbette bir spoiler yazar.

Veya RTSP/RTP ve H.264 olacaktır, bu durumda tarayıcıya VLC veya QuickTime gibi bir video oynatıcı eklentisi kurulmalıdır. Böyle bir eklenti, oynatıcının kendisi gibi videoyu alıp oynatır. Ancak ek koltuk değnekleri / eklentiler yüklemeden gerçek bir tarayıcı tabanlı akışa gerçekten ihtiyacımız var.

Öncelikle, bu cihazın tarayıcıya tam olarak ne gönderdiğini öğrenmek için IP kamerayı koklayalım. Test konusu olarak bir D-Link DCS 7010L kamera olacaktır:

Aşağıda kamerayı kurma ve yapılandırma hakkında daha fazla bilgi edinebilirsiniz, ancak burada sadece video akışı için ne kullandığını göreceğiz. Web arayüzü üzerinden kamera yönetici paneline girdiğinizde şöyle bir şey görüyoruz (manzara için kusura bakmayın):

Resim tüm tarayıcılarda açılır ve saniyede yaklaşık bir kez eşit şekilde açılır. Hem kameranın hem de akışı izlediğimiz dizüstü bilgisayarın aynı yönlendiriciye bağlı olduğu düşünüldüğünde, her şeyin sorunsuz ve güzel olması gerekir ama öyle değil. HTTP'ye benzer. Tahminlerimizi doğrulamak için Wireshark'ı çalıştırın:

Burada 1514 bayt uzunluğunda bir dizi TCP parçası görüyoruz.

Ve alınan JPEG uzunluğu ile son bir HTTP 200 OK:

Bu akışa ihtiyacımız yok. Pürüzsüz değil, HTTP isteklerini çeker. Kamera saniyede bu türden kaç isteğe dayanabilir? 10 izleyicide ve daha önce kameranın güvenli bir şekilde büküleceğine veya korkunç bir şekilde arızalanmaya başlayacağına ve slaytlar vereceğine inanmak için sebepler var.

Kamera yönetici sayfasının HTML'sine bakarsak, aşağıdaki ilginç kodu görürüz:

Eğer(tarayıcı_IE) DW(""); else ( if(mpMode == 1) var RTSPName = g_RTSPName1; else if(mpMode == 2) var RTSPName = g_RTSPName2; else if(mpMode == 3) var RTSPName = g_RTSPName3; var o=""; if (g_isIPv6) //çünkü ipv6 rtsp.var host = g_netip;else var host = g_host;o+=""; o+=""; o+=""; o+=""; o+=""; o+=""; //uyarı(o); DW(o); )

RTSP/RTP, düzgün video oynatma için ihtiyacınız olan şeydir. Ancak bir tarayıcıda çalışacak mı? - HAYIR. Ancak QuickTime eklentisini kurarsanız - her şey çalışacaktır. Ancak tamamen tarayıcı tabanlı akış yapıyoruz.

Wowza gibi uygun bir sunucu aracılığıyla RTSP, RTP, H.264'ten dönüştürülmüş bir RTMP akışını alabilen Flash Player'dan da burada bahsedilebilir. Ancak, bildiğiniz gibi Flash Player, VLC veya QuickTime'dan kıyaslanamayacak kadar popüler olmasına rağmen, aynı zamanda bir tarayıcı eklentisidir.

Bu durumda, aynı RTSP/RTP yeniden akışını test edeceğiz, ancak WebRTC uyumlu bir tarayıcı, herhangi bir ek tarayıcı eklentisi ve diğer koltuk değnekleri olmadan oynatma cihazı olarak kullanılacaktır. Akışı IP kameradan alacak ve WebRTC özellikli tarayıcılar kullanan rastgele sayıda kullanıcıya İnternet'e gönderecek bir aktarma sunucusu kuracağız.

IP kamera bağlama

Yukarıda belirtildiği gibi, test için basit bir D-Link DCS-7010L IP kamera seçildi. Buradaki ana seçim kriteri, cihazın RTSP protokolünü desteklemesiydi, çünkü sunucumuz kameradan video akışını bu protokol üzerinden alacaktır.

Kamerayı birlikte verilen yama kablosuyla yönlendiriciye bağlarız. Gücü açtıktan ve yönlendiriciye bağlandıktan sonra, kamera DHCP aracılığıyla bir IP adresi aldı, bizim durumumuzda 192.168.1.34 idi (Yönlendirici ayarlarına giderseniz, DCS 7010L cihazının bağlı olduğunu göreceksiniz - bu BT). Kamerayı test etme zamanı.

Kamera yöneticisi web arayüzüne ulaşmak için 192.168.1.34 tarayıcısında belirtilen IP adresini açın. Varsayılan olarak parola yoktur.

Gördüğünüz gibi kameradan gelen video admin panelinde düzgün bir şekilde yayınlanıyor. Aynı zamanda, periyodik sıkışma fark edilir. WebRTC kullanarak düzelteceğimiz şey bu.

kamera kurulumu

İlk olarak, kamera ayarlarında kimlik doğrulamayı devre dışı bırakıyoruz - testin bir parçası olarak, akışı soran herkese vereceğiz. Bunu yapmak için kameranın web arayüzünde ayarlara gidin. Kurulum-Ağ ve seçeneğin değerini ayarlayın Devre Dışı Kimlik Doğrulama.

Aynı yerde RTSP protokol portunun değerini kontrol ediyoruz, varsayılan olarak 554'tür. İletilen videonun formatı kullanılan profile göre belirlenir. Kamerada en fazla üç tanesini ayarlayabilirsiniz, ilkini kullanacağız, live1.sdp - varsayılan olarak video için H.264 ve ses için G.711 kullanacak şekilde ayarlanmıştır. bölümünde gerekirse ayarları değiştirebilirsiniz. Kurulum-Ses ve Video.

Artık kameranın çalışmasını RTSP üzerinden kontrol edebilirsiniz. VLC Player'ı açın (RTSP - QuickTime, Windows Media Player, RealPlayer, vb. destekleyen herhangi birini kullanabilirsiniz) ve URL Aç iletişim kutusunda kameranın RTSP adresini ayarlayın: rtsp://192.168.1.34/live1.sdp

Her şey olması gerektiği gibi çalışıyor. Kamera, oynatıcıdaki video akışını RTSP protokolü aracılığıyla düzgün bir şekilde oynatır.

Bu arada, akış oldukça sorunsuz ve eserler olmadan yeniden üretilir. WebRTC'den de aynısını bekliyoruz.

sunucu kurulumu

Böylece kamera kurulur, masaüstü oynatıcılarla test edilir ve sunucu üzerinden yayına hazır hale gelir. Whatismyip.com'u kullanarak kameranın harici IP adresini belirliyoruz. Bizim durumumuzda 178.51.142.223 idi. Yönlendiriciye, 554 numaralı bağlantı noktasından RTSP aracılığıyla erişirken, gelen isteklerin IP kameraya iletildiğini söylemek kalır.

Uygun ayarları yönlendiriciye çakıyoruz ...

...ve telnet kullanarak harici IP adresini ve RTSP bağlantı noktasını kontrol edin:

Telnet 178.51.142.223 554

Bu portta bir yanıt olduğundan emin olduktan sonra WebRTC sunucusunu kurmaya geçiyoruz.

Barındırmadan Amazon EC2 üzerinde Centos 64 bit üzerinde bir sanal sunucu sorumlu olacaktır.
Performans sorunu yaşamamak için tek VCPU'lu m3.medium örneğini seçtik:

Evet, evet, Linode ve DigitalOcean da var ama bu durumda Amazon'u istedim.
İleriye baktığımda, Amazon EC2 kontrol panelinde, örneğin çalışmadığı birkaç kural (ileri bağlantı noktaları) eklemeniz gerektiğini yazacağım. Bunlar, WebRTC(SRTP, RTCP, ICE) trafiği için bağlantı noktaları ve RTSP/RTP trafiği için bağlantı noktalarıdır. Denerseniz, Amazon'un kuralları gelen trafik için benzer bir şeye sahip olmalıdır:

Bu arada DigitalOcean ile her şey daha kolay olacak, sadece bu bağlantı noktalarını güvenlik duvarında açın veya ikincisini kapatın. DO bulut sunucularını çalıştırma konusundaki en son deneyime göre, yine de statik bir IP adresi veriyorlar ve NAT'lerle uğraşmıyorlar, bu da Amazon'da olduğu gibi bağlantı noktası yönlendirmeye gerek olmadığı anlamına geliyor.

Bir RTSP/RTP akışını WebRTC'ye aktaran bir sunucu yazılımı olarak Flashphoner'ın WebRTC Medya ve Yayın Sunucusunu kullanacağız. Akış sunucusu, RTSP/RTP'yi Flash'a aktarabilen Wowza'ya çok benzer. Tek fark, bu akışın Flash'a değil WebRTC'ye verilecek olmasıdır. Onlar. tarayıcı ve sunucu arasında dürüst bir DTLS geçecek, bir SRTP oturumu kurulacak ve VP8'de kodlanan akış izleyiciye gidecek.

Yüklemek için SSH erişimine ihtiyacımız var.

Spoylerin altında - yürütülen komutların ayrıntılı bir açıklaması

1. Sunucunun kurulum arşivini indirin:
$wget flashphoner.com/downloads/builds/WCS/3.0/x8664/wcs3_video_vp8/FlashphonerMediaServerWebRTC-3.0/FlashphonerMediaServerWebRTC-3.0.868.tar.gz
2. Dağıtıldı:
$tar -xzf FlashphonerMediaServerWebRTC-3.0.868.tar.gz
3. Yüklendi:
$cd FlashphonerMediaServerWebRTC-3.0.868
$./install.sh
Kurulum işlemi sırasında sunucunun harici IP adresi girildi: 54.186.112.111 ve dahili 172.31.20.65 (Özel IP olan).
4. Sunucuyu başlattı:
$service webcallserver başlangıcı
5. Günlükleri kontrol etti:
$tail - f /usr/local/FlashphonerWebCallServer/logs/server_logs/flashphoner.log
6. Sunucunun başlatıldığından ve çalışmaya hazır olduğundan emin olduk:
$ps yardımcı | grep Flashfoner
7. Apache yüklendi ve başlatıldı:
$yum httpd'yi kurun
$hizmet httpd başlangıcı
8. Web dosyalarını indirin ve standart Apache klasörüne /var/www/html yerleştirin
cd /var/www/html
$wget github.com/flashphoner/flashphoner_client/archive/wcs_media_client.zip
$unzip webrtc_media_client.zip
9. Flashphoner.xml yapılandırmasında sunucu IP adresini girin:
10. Güvenlik duvarını durdurdu.
$hizmet iptables durdurma

Teorik olarak, 10. nokta yerine gerekli tüm bağlantı noktalarını ve güvenlik duvarı kurallarını ayarlamak doğru olurdu, ancak test amacıyla güvenlik duvarını devre dışı bırakmaya karar verdik.

Sunucu Ayarı

WebRTC yayınımızın yapısının aşağıdaki gibi olduğunu hatırlayın:

Bu şemanın ana unsurlarını zaten kurduk, etkileşimlerin "oklarını" oluşturmaya devam ediyor.

Tarayıcı ile WebRTC sunucusu arasındaki bağlantı, github : üzerinde bulunan bir web istemcisi tarafından sağlanır. Bir dizi JS, CSS ve HTML dosyası basitçe /var/www/html kurulum aşamasında (spoiler altındaki yukarıdaki 9. paragrafa bakın).

Tarayıcı ve sunucu arasındaki etkileşim, flashphoner.xml yapılandırma XML dosyasında yapılandırılır. Web istemcisinin WebRTC sunucusuna HTML5 Websockets aracılığıyla bağlanabilmesi için sunucunun IP adresini buraya girmeniz gerekir (yukarıdaki 9. madde).

Sunucu kurulumu burada sona eriyor, çalışmasını kontrol edebilirsiniz:

Tarayıcıda index.html web istemci sayfasını açıyoruz (bunun için Apache aynı Amazon sunucusuna şu komutla kuruldu: yum -y httpd'yi kur):

54.186.112.111/wcs_media_client/?id=rtsp://webrtc-ipcam.ddns.net/live1.sdp

Burada webrtc-ipcam.ddns.net harici IP adresimizi ifade eden dinamik DNS sunucusu noip.com aracılığıyla elde edilen ücretsiz bir alan adıdır. Yönlendiriciye RTSP isteklerini NAT kurallarına göre 192.168.1.34'e yönlendirmesini söyledik (ayrıca yukarıya bakın).
Parametre id=rtsp://webrtc-ipcam.ddns.net/live1.sdp oynatılacak akışın URL'sini belirtir. WebRTC sunucusu kameradan akış talep edecek, bunları işleyecek ve WebRTC aracılığıyla oynatmak için tarayıcıya gönderecektir. Yönlendiriciniz DDNS'yi destekliyor olabilir. Değilse, IP kameranın kendisinin böyle bir desteği vardır:

DDNS desteği yönlendiricinin kendisinde şöyle görünür:

Şimdi test etmeye başlayabilir ve sonuçları değerlendirebilirsiniz.

Test yapmak

Bağlantıyı tarayıcıda açtıktan sonra, IP kameraya video akışı alması için istek gönderen WebRTC sunucusuna bir bağlantı kurulur. Tüm süreç birkaç saniye sürer.

Bu sırada, tarayıcı sunucuya web soketleri aracılığıyla bağlanır, ardından sunucu RTSP aracılığıyla IP kamerayı ister, RTP aracılığıyla H.264 akışını alır ve sonunda WebRTC tarayıcısı tarafından oynatılan VP8 / SRTP'ye dönüştürür.

Videonun altında, başka bir tarayıcıdan veya sekmeden görüntülenmek üzere kopyalanıp açılabilen video akışının URL'si görüntülenir.

Bunun gerçekten WebRTC olduğuna ikna olduk.

Aniden kandırıldık ve IP kameradan gelen video yine HTTP üzerinden mi gönderiliyor? Resme boş boş bakmayalım, gerçekte nasıl bir trafik aldığımıza bir bakalım. Tabii ki, Wireshark'ı ve Chrome'da hata ayıklama konsolunu yeniden başlatıyoruz. Tarayıcının Chrome konsolunda aşağıdakileri gözlemleyebiliriz:

Bu sefer titreme yok ve hiçbir HTTP görüntüsü görünmüyor. Bu sefer tek gördüğümüz Websocket çerçeveleri ve bunların çoğu bir Websocket oturumunu sürdürmek için ping/pong türleri. İlginç çerçeveler: connect, readyRtspSession ve onReadyToPlay - bu, sunucuya bağlantının kurulduğu sıradır: önce bir Websocket bağlantısı ve ardından oynatma için bir akış isteği.

Ve işte gösterdiği şey chrome://webrtc-internals

Grafiklere göre, IP kameradan 1 Mbps'lik bir bit hızımız var. Giden trafik de var, büyük olasılıkla bunlar RTCP ve ICE paketleri. Amazon sunucusuna RTT yaklaşık 300 milisaniyedir.

Şimdi Wireshark'a bakalım, sunucu IP adresinden gelen UDP trafiği orada açıkça görülüyor. Aşağıdaki resimde, 1468 baytlık paketler. Bu WebRTC'dir. Daha doğrusu SRTP paketleri, tarayıcı ekranında gözlemleyebileceğimiz VP8 video karelerini taşır. Ek olarak, STUN istekleri atlanıyor (resimdeki en düşük paket) - bu, bağlantıyı dikkatlice kontrol eden WebRTC ICE'dir.

Video oynatmanın nispeten düşük gecikme süresine (veri merkezine ping yaklaşık 250 ms idi) dikkat çekmeye değer. WebRTC, HTTP, RTMP ve diğer TCP benzeri akış yöntemlerinden farklı olarak paketleri iletmenin en hızlı yolu olan SRTP/UDP üzerinden çalışır. Onlar. gözle görülen gecikme, RTT + tarayıcı arabelleğe alma, kod çözme ve oynatma süresi olmalıdır. Görsel olarak, bu durumda öyle - göz neredeyse gecikmeyi görmüyor, 500 milisaniyeden az.

Bir sonraki test, diğer izleyicileri birbirine bağlamaktır. 10 Chrome penceresi açabildim ve her biri bir resim gösterdi. Aynı zamanda, Chrome'un kendisi de biraz körelmeye başladı. 11. pencereyi başka bir bilgisayarda açarken oynatma sorunsuz kaldı.

Mobil cihazlarda WebRTC hakkında

Bildiğiniz gibi WebRTC, Android platformunda Chrome ve Firefox tarayıcıları tarafından desteklenmektedir.
Yayınımızın orada gösterilip gösterilmeyeceğini kontrol edelim:

Resimde HTC telefon, kameradan gelen video Firefox tarayıcısında görüntülenir. Masaüstünden oynatmanın akıcılığında herhangi bir fark yoktur.

Çözüm

Sonuç olarak, minimum çabayla bir IP kameradan birkaç tarayıcıya WebRTC canlı yayını başlatmayı başardık. Tef veya roket bilimi gerekmiyordu - yalnızca temel Linux ve SSH konsolu bilgisi gerekiyordu.

Yayın kalitesi kabul edilebilir bir seviyedeydi ve oynatma gecikmesi gözle görülemeyecek seviyedeydi.

Özetle tarayıcı tabanlı WebRTC yayınlarının var olma hakkı var diyebiliriz çünkü. bizim durumumuzda, WebRTC artık bir koltuk değneği veya eklenti değil, tarayıcıda video oynatmak için gerçek bir platformdur.

WebRTC'nin yaygın olarak benimsendiğini neden görmüyoruz?

Ana fren, belki de kodek eksikliğidir. WebRTC topluluğu ve satıcıları, H.264 codec bileşenini WebRTC'ye dahil etmek için çaba göstermelidir. VP8'e karşı söylenecek bir şey yok ama neden H.264 ile çalışan milyonlarca uyumlu cihaz ve yazılımdan vazgeçelim? Patentler, böyle patentler...

İkinci sırada, tarayıcılarda tam destek yok. Örneğin, IE ve Safari ile soru açık kalır ve orada başka bir akış türüne geçmeniz veya webrtc4all gibi bir eklenti kullanmanız gerekir.

Dolayısıyla gelecekte, kod dönüştürme ve akış dönüştürme gerektirmeyen daha ilginç çözümler görmeyi umuyoruz ve çoğu tarayıcı, çeşitli cihazlardan akışları doğrudan oynatabilecek.