Sochi.Camera - eine Website mit Broadcast-Streams von mehr als 300 in Sotschi und Umgebung installierten Webkameras. Die Website und der gesamte Service sind gemeinnützig und werden vom lokalen Internetanbieter
Business Connection fast 10 Jahre lang auf eigene Kosten erstellt und gewartet.
Bei der Erstellung eines Projekts haben wir viele Modelle externer Videokameras (fest, drehbar, mobil) ausprobiert und diese modifiziert und an unsere Bedürfnisse angepasst. Wir haben verschiedene Serverlösungen ausprobiert, um sie an die Entwickler zu erinnern. Sie selbst haben mobile Anwendungen für Android und iOS geschrieben. Das Projekt stellte sich als sehr schwierig heraus, aber wir haben nach und nach jedes Element des Systems auf einen Zustand hoher Effizienz gebracht. Die Entwicklung geht weiter, aber jetzt gibt es etwas zu erzählen.

Dies ist der erste Übersichtsartikel. Darin werden wir darüber sprechen, wie dieses Projekt gestartet und entwickelt wurde, woraus die technische Lösung besteht, wie eine Webcam von einem Löwen in einem Käfig installiert wird (Spoiler - mit einem Löwen arrangieren) und warum Menschen aus ganz Russland Sotschi über unsere Website betrachten. Wenn dieser Beitrag interessant erscheint, können wir ausführlicher über das Projekt sprechen.
Von der technischen Seite das Sotschi-Projekt. Die Kamera ist in drei Teile gegliedert:
1) mach ein Bild;
2) Übertragen Sie es auf den Video-Broadcast-Server.
3) Zeigen Sie den Stream auf der Website.
Und das alles ist in der Luft.
Lass uns nacheinander gehen.
Kameras.
Die Kameras im Netzwerk sind unterschiedlich. Fast 10 Jahre lang haben sie viele Modelle ausprobiert, einige der getesteten sind im Netzwerk. Die Kameras sind einheitlich, Standard, das von uns verwendete Protokoll - RTSP - wird von fast jedem Standardmodell unterstützt. Die Kosten für Kameras sind seit 2008 dramatisch gesunken, und die Bildqualität ist dramatisch gestiegen. Damals kostete eine einfache statische Kamera ungefähr 40.000 Rubel. Heute können Sie für das gleiche Geld eine rotierende Full-HD-Kamera kaufen, die nach Punkten "patrouillieren" kann, sie auf den Turm legt und ein dynamisches Bild liefert. Eine gewöhnliche statische Kamera kostet heute nur 5-7 Tausend (vergessen Sie nicht die Rabatte).
Die Bildqualität moderner Kameras ist fast Fernsehen, es ist überhaupt nicht das Bild in der Webcam, an das wir alle gewöhnt sind - ein kleines dunkles Quadrat mit einer Frequenz von 1 Bild pro Sekunde.

Kürzlich haben sich zwei Modelle entschieden:
Hikvisionund
SNRSie sind geräuscharm und haben dank der modernen Matrix einen guten Nachtaufnahmeeffekt.
Jede Kamera bietet zwei Streams: Full HD (Geschwindigkeit 4-6 Mbit / s) und SD (512 Kbit / s). Die Site verfügt über HD / SD-Schalter. Dies geschieht, damit Benutzer mit langsamem Internet den sparsamen SD-Modus aktivieren können. Es wird auch in unseren mobilen Anwendungen verwendet, da auf dem kleinen Bildschirm der Unterschied zwischen Full HD und SD kaum wahrnehmbar ist. Natürlich gibt es viele Kameras auf dem Markt mit einer höheren Auflösung als Full HD, zum Beispiel 4MP. Wir haben versucht, sie zu verwenden, aber die Praxis hat gezeigt, dass solche Berechtigungen für Online-Sendungen im Internet ungeeignet sind. Erstens überträgt nicht jeder Internetkanal dies ohne Verlust, und nicht jedes Clientgerät kann diesen Stream schmerzlos anzeigen. Infolgedessen kann die Übertragung mit Rucken und Artefakten einhergehen, schließlich ist das Internet kein lokales Netzwerk. Um das Ganze abzurunden, stellte sich heraus, dass die überwiegende Mehrheit der Benutzer Kameras eher im Fenstermodus als im Vollbildmodus betrachtet, dh am Ausgang ist der Unterschied in Bitraten und Auflösungen für sie überhaupt nicht sichtbar. Infolgedessen haben wir sogar 4-Megapixel-Kameras in den 2MP 1920x1080-Modus übertragen. Was die Software betrifft, so ändern wir in den Kameras selbst, der Standard-Werksfirmware, in der Regel nichts.
Derzeit sind rund 318 Kameras im allgemeinen Zugriff. Die Aufzeichnung erfolgt mit ~ 115-120 Kameras, die sich auf die Verkehrssituation beziehen. Die Aufzeichnung wird benötigt, weil Unfälle analysiert werden müssen, was ziemlich häufig vorkommt. Wir zeichnen keine Kameras auf, die die Natur, Sonnenuntergänge, Berge usw. betrachten. Record Server sind eine teure Ressource, vergeblich versuchen wir, sie nicht auszugeben.
Zum Schutz der Privatsphäre sind Kameras so installiert, dass Gesichter nicht lesbar sind. Wir stellen Panoramakameras so ein, dass die allgemeine Szene sichtbar ist, zum Beispiel eine gelbe Maschine trifft eine blaue, eine Ampel brennt dort so und so, nichts weiter. Trotzdem werden die Verkehrspolizei und die Polizei oft, jede Woche und manchmal sogar jeden Tag gebeten, die Aufzeichnungen vorzulegen.


Die Installation und Wartung der Kameras erfolgt durch Vertragspartner. Wenn es gleichzeitig Probleme gibt, befolgen Sie die Anweisungen zu genau. Es ist notwendig, mehr als gemäß den Anweisungen zu tun, um beispielsweise Druck- und Temperaturunterschiede zu berücksichtigen. Dabei gab es Tricks, zum Beispiel das Anschließen eines Ethernet-Kabels im Kameragehäuse und nicht in der Installationsbox oder im Standard-Verbindungsgehäuse. Das Isolieren von Webcams ist im Vergleich zu normalen Mitteln viel schwerwiegender, sodass sie mehrere Jahre lang leise arbeiten, ohne dass Feuchtigkeit ins Innere gelangt.
Wir zahlen nichts für die Platzierung von Kameras, dies ist ein grundlegender Punkt, da unser Projekt gemeinnützig ist - das Bild ist gemeinfrei, wir verdienen nichts damit. Wenn also jemand nicht kostenlos posten möchte, posten wir dort nicht. Die Stadt hat viele schöne Orte und viele, die unsere Kameras aufstellen wollen. Bauherren sind eher bereit, die Erlaubnis zur Installation zu erteilen, einfach weil wir vor der Kamera stehen, um diese Einrichtungen kostenlos zu bewerben. Unsere Besucherzahl ist hoch genug für einen regionalen Standort, mehr als 500.000 Menschen pro Monat, wir konkurrieren mit großen lokalen Nachrichtenportalen. Das Problem ist also, den Kanal an einen interessanten Ort zu bringen, anstatt die Kamera tatsächlich zu platzieren.

Nachdem wir die optimalen Lösungen für verschiedene Installationssituationen gefunden haben, machen Kameras im Allgemeinen etwa 10% des Projektes in Sotschi aus. Kamera. Die Hauptsache liegt nicht in ihnen, sondern in den Videoübertragungskanälen und der Software für die Ausstrahlung auf der Website.
Videoübertragungskanäle.
"Business Communication" ist ein Internetprovider, Telekommunikationsbetreiber, wir haben ein eigenes Stadtnetz, eine große Anzahl von Knoten. Wir müssen also keine Kanäle für die Videoübertragung mieten, weder die „letzte Meile“ noch Amtsleitungen oder den Internetzugang - wir haben bereits alles.
Verbraucher unserer Dienstleistungen sind Organisationen und Einzelpersonen. Wenn Sie sich das Profil des Internetverkehrs ansehen, gibt es hauptsächlich eingehenden Verkehr, da ein Standardbenutzer in der Regel Verkehr verbraucht (herunterlädt) und nur sehr wenig generiert. Im Durchschnitt beträgt das Verhältnis von eingehendem zu ausgehendem Verkehr 10 zu 1. Die Kanäle, die wir mieten / kaufen, um Internetdienste von Backbone-Betreibern bereitzustellen, sind synchron, die eingehenden und ausgehenden Geschwindigkeiten sind gleich. Die Rückgabe (Ausgangskanal) für Internetprovider wie uns ist also in der Regel halb leer. Diese Situation ist typisch für die meisten Bediener, die mit Menschen arbeiten. In den Rechenzentren von Hosting-Anbietern und sozialen Netzwerken ist die Situation umgekehrt, es gibt hauptsächlich ausgehenden Verkehr, aber dies ist nicht unser Fall.
Infolgedessen stellt sich heraus, dass das Sammeln von Videos von Kameras und das Senden an das Internet im Hinblick auf die Kosten für die Übertragung von Datenverkehr fast nichts kostet. Gleichzeitig werden ernsthafte Kanäle benötigt, da eine statische Kamera etwa 4 Mbit / s und eine schwenkbare Kamera bis zu 10 Mbit / s zum Zeitpunkt der Winkeländerung liefert.

Multiplizieren Sie dies mit der Anzahl der gleichzeitigen Verbraucher, die tagsüber 2.000 oder mehr beträgt. Angenommen, eine Drittorganisation, kein Telekommunikationsbetreiber, möchte ein Projekt wie Sochi.Kamer erstellen. In diesem Fall müssen alle notwendigen Ressourcen von Signalmännern gemietet werden, und zu aktuellen Preisen kostet dies einen hübschen Cent. Wenn Sie jedoch ein Telekommunikationsbetreiber sind, liegt die Flagge in Ihren Händen.
Es gibt jedoch immer noch Schwierigkeiten bei der Organisation von Kommunikationskanälen. Dies liegt an der Tatsache, dass dort, wo Kommunikationskanäle vorhanden sind, dh in der Innenstadt, im Grunde nichts zu sehen ist. Und wo es interessant ist, gibt es keine engen Kommunikationskanäle und sie müssen irgendwie organisiert, Geräte, Verbrauchsmaterialien und Humanressourcen zugewiesen werden. Zum Beispiel organisieren wir jetzt eine Verbindung zum Waschbärenbau im Wald.
Video-Broadcasting-Software.
Wir haben unser Projekt in den Jahren 2008-2009 gestartet, als es keine Proben gab, die einfach entnommen und kopiert werden konnten. Dann gab es viele Webcam-Aggregatoren, die nach Möglichkeit nach ihnen suchten und sie in einem Verzeichnis als angeblich ihre eigenen präsentierten. Es gab jedoch keine komplexen, vorgefertigten Lösungen. Um eine so große Anzahl von Kameras zu empfangen und an viele Menschen auf verschiedenen Geräten zu verteilen, benötigen Sie zuverlässige und stabile Software. Also haben wir angefangen, alles selbst zu machen. Es war eine mehrjährige Entwicklung von Grund auf neu, angefangen von Design, Layout bis hin zur Softwarearchitektur. Sie haben es von niemandem kopiert, sie haben fünf Versionen der Engine ausprobiert - von primitivem LinuxDVR auf mjpeg bis zu Red 5, ffmpeg + nginx, Wowza. Letzteres wurde übrigens nicht aus technischen Gründen aufgegeben, sondern aufgrund von Änderungen der Lizenzbedingungen beim Wechsel zu einer neuen Version und des Fehlens einer lebenslangen Lizenz in der neuen Richtlinie des amerikanischen Entwicklers. Das heißt, sie wollten monatlich Geld erhalten, basierend auf der tatsächlichen Belastung. Und die Tatsache, dass das Projekt nicht gewinnorientiert war, störte niemanden dort.
Bei der Entwicklung und Weiterentwicklung des Dienstes haben wir uns an die Firma Erlivideo gewandt, die den Medienserver Flussonic entwickelt. Das Projektteam stammte aus Moskau, und es war leicht, eine gemeinsame Sprache zu finden. Im Großen und Ganzen funktionierte es gut bei der Lösung nicht trivialer Aufgaben. Das soll nicht heißen, dass immer alles glatt war und Pfosten und Rechen herauskamen. ABER. Wenn Sie den Wunsch eines Entwicklers sehen, sein Produkt zu verbessern, die Kommentare des Kunden zu hören und zu berücksichtigen und die tatsächlichen Ergebnisse einer solchen Interaktion nach dem nächsten Update zu sehen, ist dies viel wert.

Flussonic Media Server ist eine Video-Streaming-Server-Plattform. Mit seiner Hilfe können Sie die Erfassung von Videostreams organisieren, Videos im Archiv aufzeichnen und mithilfe verschiedener Protokolle und auf beliebigen Geräten in Echtzeit und bei Bedarf an Clients verteilen. Die Wiedergabe ist in Form eines Endlosbandes möglich, das jederzeit angezeigt werden kann. Die Verteilung kann über die Protokolle RTMP, RTSP, HLS, HDS, HTTP MPEG-TS, DASH und WebRTC erfolgen. Außerdem kann Flussonic Videos durch Ändern der Codec- und Videoparameter transkodieren. Die Liste der unterstützten Codecs umfasst H.264, H.265, MPEG-2, AAC, AC3, MP3, VP6, Speex und G711a / u. Die Plattform kann Cluster von Servern zusammenstellen, mehr als 1600 Streams erfassen und Hunderttausende gleichzeitiger Verbindungen verteilen. Sie können sowohl die integrierten Tools und die Weboberfläche als auch die HTTP-API verwenden, um Aktivitäten und Ladevorgänge zu verwalten und zu überwachen.
Von Kameras sammeln wir Streams in Standard-RTSP. Bis vor kurzem hauptsächlich DASH für Flash-Player, UDP Multicast für das interne Netzwerk und HLS für mobile Anwendungen verbreitet. In den letzten Jahren wurden regelmäßig HTML5-Revolutionen und die „Beerdigung“ von Adobe Flash angekündigt. Daher mussten wir ein ganzes Design verwenden, das je nach Browser und Client-Betriebssystem den benötigten Player- und Stream-Typ „speist“. Trotz des Hype um HTML5 waren viele beliebte Browser für das Video-Tag beim Live-Streaming sehr ungeschickt. Im Gegensatz dazu beispielsweise von der Wiedergabe eines aufgezeichneten Videos, das seit der Ankündigung von HTML5 stabil genug funktioniert hat.
Jetzt können wir sagen, dass die „Browserturbulenzen“ vorbei sind und wir in Browsern auf native HTML5-Übertragung umgestellt haben, wobei wir das Flash-Plugin vollständig aufgegeben haben. Somit haben wir "zur Hand" nur noch HLS und Multicast.
Für unsere Abonnenten, die IPTV für Multicast verwenden, haben wir die Übertragung dieser Kameras an ein Fernsehnetzwerk durchgeführt, dh sie sehen alle Webcams als separate Fernsehkanäle auf ihren Fernsehgeräten. Webcams in IPTV sind thematisch sortiert und ergänzen die von unseren Kunden angebotenen Standard-TV-Kanäle.
Unsere andere Funktion ist die Funktionalität des eingebetteten Players wie bei YouTube oder Vimeo. Von unserem Service aus senden wir Videos an einige sehr berühmte Orte - dies sind Krasnaya Polyana Resorts und Hotels. Gleichzeitig erhöhen sie das Streaming nicht auf ihrer Seite, sondern benötigen lediglich den Einfügecode. Der eingebettete Player kann entweder mit einem Branding versehen sein oder keine Erkennungszeichen aufweisen, sodass unsere Partner ihre Seiten unabhängig im richtigen Stil gestalten können. Beispiele:
EinsZweiDreiEin weiteres Merkmal von uns sind mobile Webcams, die auf Mobiltelefonen basieren. Wir haben sie "The Fluff" genannt, nach der Push-Video-Streaming-Methode. Dies ist eine benutzerdefinierte Android-Anwendung, die als APK-Datei verteilt wird. Auf dem Markt ist es nicht und wird es auch nicht sein. Die Idee ist einfach: Das Mobiltelefon bietet alles, was Sie für die Videoübertragung benötigen: eine Kamera, GPS-Positionierung, Datenkanal. Wir haben eine Anwendung erstellt, die das Video verarbeitet und sofort an Sotschi überträgt. Kamera. Optional übertragener Ton und Koordinaten. Die Erstellung von "Schwarzen Löchern" ist vorgesehen, sobald der "Fluff" die Sendung pausiert. Die "Cannon" -Analoga sind bekannt, zum Beispiel "Periscope" für "Instagram". Früher haben wir darüber nachgedacht, diese Anwendung unter Bloggern zu verteilen, diese Idee jedoch aus mehreren Gründen aufgegeben. Jetzt arbeiten die "Guns" in mehreren Stadtbussen, und näher an der Saison werden Sendungen von Sightseeing-Schiffen ihre Arbeit wieder aufnehmen.


Sotschi selbst. Die Kamera ist komplett in Javascript gemacht. Server - auf Node.js, Browserteil - Angular.js
Mobile Anwendungen für Android, iOS und Windows Phone werden mit Standard-Entwicklertools geschrieben. Es ist auch erwähnenswert, dass es eine Anwendung für Windows Desktop gibt. Einige Kunden bevorzugen sie gegenüber dem Browser, da sie schneller funktioniert, keine Werbung erfolgt und im Allgemeinen minimalistische Funktionen ohne ein „Kit“ in Form von Chats und anderen Dingen vorhanden sind.
Es ist interessant, dass in der Vergangenheit keine schlüsselfertigen integrierten Lösungen erschienen sind. Bestehende fertige Videosysteme sind für völlig andere Zwecke konzipiert, hauptsächlich für die Überwachung von Sicherheitsvideos. Es gibt eine Videowand, die aufzeichnet, anzeigt, zurückspult und so weiter, aber sie sind für die Überwachung von Sicherheitsvideos geschärft und nicht für die Arbeit von mehreren tausend Personen gleichzeitig. Dies ist im Allgemeinen ein anderer Ansatz, eine andere Architektur.
Hierzu möchte ich den Übersichtsartikel beenden. Wie oben erwähnt, können viele Elemente des Systems detaillierter beschrieben werden, sie sind es wert. Zum Beispiel über die Tricks der Installation von Videokameras auf der Straße bei hoher Luftfeuchtigkeit und großen Temperaturunterschieden, die Organisation mobiler Kameras in Bussen und Motorschiffen oder detaillierter über Anwendungen für Smartphones und deren Serverseite oder über die Auswahl von Software für das Video-Streaming auf der Website. Wir können Ihnen auch etwas über die Kosten für die Entwicklung und Wartung eines solchen Projekts erzählen. Die ersten Injektionen für die Entwicklung in den ersten Jahren beliefen sich beispielsweise auf etwa 4.000.000 Rubel. Dies ist jedoch nicht die endgültige Zahl.
Sie können sich fragen, an welchem Teil des Projekts Sie interessiert sind. Warten auf Ihre Fragen.