Sochi. Camera: fitur untuk membuat proyek secara umum, lengkap, sepenuhnya dari awal, tanpa standar dan contoh sudah diterapkan

Sochi.Camera - situs dengan aliran siaran dari lebih dari 300 kamera web yang dipasang di Sochi dan sekitarnya. Situs dan seluruh layanan adalah nirlaba, dibuat dan dikelola dengan biaya sendiri oleh penyedia Internet "Koneksi Bisnis" , selama hampir 10 tahun. Dalam posting ini kami akan memberi tahu cara kode dari nol mutlak; tentang pertempuran dengan YouTube (kami menang); mengapa perangkat lunak bebas buruk dan layanan streaming video gratis bagus. Mungkin di masa depan, ketika mereka berpaling kepada kami dengan proposal berikutnya - menulis untuk 100-200 ribu rubel. layanan yang sama dengan Sochi. Camera, alih-alih seribu kata, kami akan memberi Rafael tautan ke pos ini, sehingga semua orang dapat segera mengerti.

Versi pertama: desain sobek dengan potongan kode orang lain

Proyek kami dibuat dari awal, tidak ada layanan, model peran atau templat yang serupa. Segala yang kami lakukan, harus kami lakukan sendiri: mulai dari menulis ulang modul kereta dari perpustakaan open source hingga menemukan cara baru untuk memasang kamera. Tidak ada solusi yang siap pakai, dan ketika kami memulai proyek, dan sekarang mereka tidak dalam bentuk template juga, bagaimanapun keterampilan pemrograman yang cukup baik diperlukan.

Kami memulai sendiri, dengan administrator jaringan penuh waktu kami, yang tahu cara membuat kode sedikit. Hampir dari langkah pertama proyek kami ingin membuat hidup kita lebih mudah. Tetapi satu-satunya versi "ripped off" dari situs tersebut adalah yang pertama. Desainnya dipinjam dari program desktop untuk melihat foto dan video, yang namanya tidak ada yang ingat sekarang. Sebenarnya, ide asli situs itu adalah bioskop online dengan banyak aula, dengan latar belakang gelap dan layar besar dengan gambar berkualitas tinggi. Rancangan program ini dengan nama yang terlupakan hanyalah - latar belakang yang gelap, banyak preview, ketika diklik, layar besar dibuka.



Kode diambil dari DVR Linux, open source open source Linux DVR. Ini berfungsi sebagai situs, dimungkinkan untuk mengaksesnya melalui browser dan menonton streaming dari kamera. Pada sepotong kode dari DVR Linux, di mana gerak jpeg digunakan, kami menarik desain dari program penampil foto dan kami mendapatkan versi pertama Sochi.Kamera ini canggung, tetapi berfungsi.

Sekarang versi kelima Sochi berfungsi. Kamera. Desain situs telah banyak berubah. Namun, ide utama dari "gedung bioskop gelap" tidak hilang, tetapi sekarang desainnya lebih seperti video Yandex daripada foto desktop dan perpustakaan video. Namun, ini hanya pengingat jarak jauh, bukan penampilan yang sobek. Kompetisi online diumumkan untuk versi baru situs, desain keseluruhan dan piktogram yang dibuat oleh pemenang digunakan pada versi situs saat ini.

gambar

Tentu saja, tidak semua pengguna situs menyukai tampilan baru, karena bagi yang sangat tidak puas, versi lama juga dibiarkan, namun sekarang hampir tidak ada yang mengunjunginya.

Adapun kode, versi kedua dan selanjutnya dilakukan lebih mandiri, dan mereka ternyata kurang artisanal. Sekarang layanan dibuat dalam skrip Java, bagian server di Node.js, bagian klien di Angular.js. Kami hanya memiliki satu orang yang mengembangkan aplikasi server, tetapi ia adalah pengembang profesional dan layanan tingkat tinggi kami saat ini sebagian besar merupakan keunggulannya. Ngomong-ngomong, seluruh tim kami terdaftar di bagian proyek di Sochi.

Turbulensi saat beralih dari Flash ke HTML5

Ketika Steve Jobs mendeklarasikan perang terhadap Flash, situs kami mengerjakannya. Semua pembuat browser mulai secara bertahap meninggalkan HTML5, di mana demonstrasi aliran video belum distandarisasi, dan kami mendapat masalah besar. Sochi. Kamera bisa bekerja selama beberapa tahun pada Flash, tetapi dalam versi baru browser semuanya bekerja dengan tidak stabil, kami kehilangan banyak pengguna, karena alih-alih video dari kamera mereka mendapat jendela gelap.



Itu perlu untuk menulis ulang situs untuk versi browser baru, dan tidak hanya harus menulis sepotong kode untuk setiap versi secara terpisah, itu juga diperlukan untuk menentukan sekelompok pemain browser dengan cepat. Di sini pengembang kami menulis konstruksi sedemikian rupa sehingga cukup berhasil. Tentu saja, ini sangat menegangkan dan rumit kodenya. Jadi, ketika situasi dengan standardisasi telah selesai, kami sekali lagi mendesain ulang layanan, menghilangkan kruk tambahan ini.

Salah satu kekuatan pengembang kami terletak pada kenyataan bahwa ia terus terlibat dalam refactoring - mengoptimalkan kode, mengurangi beban di server dan saluran komunikasi, terus-menerus memantau kemampuan versi baru bahasa pemrograman.

Ngomong-ngomong, pada saat yang sama, ketika kami berjuang dengan format browser yang berbeda, YouTube memecahkan masalah yang sama, dengan dua perbedaan kecil: YouTube menampilkan file, bukan stream, yang membuat programmer lebih mudah; dan ini adalah YouTube, dengan staf besar programmer, dan bukan perusahaan kecil dengan satu programmer, meskipun programmer yang sangat bagus dan bahkan brilian. Melihat sekarang pada urusan masa lalu ini, kita dapat mengatakan bahwa turbulensi telah berlalu tidak lebih buruk.

Selain pendekatan yang benar dari programmer utama kami terhadap efektivitas perangkat lunak, poin lain yang sangat penting adalah pilihan platform streaming baru. Meskipun kami meninggalkan Wowza bukan karena “alasan teknis”, tetapi karena kebijakan tarif mereka yang tidak sopan, secara teknis kami juga menang dalam jangka panjang. Kami mulai bekerja dengan Flussonic dari Erlivideo pada versi keempat kami, sekitar 4 tahun yang lalu, ketika mereka belum terdengar. Kemudian produk ini beralih dari sumber terbuka semi-kerajinan ke komersial berbayar normal.

Sejarah produk ini sangat dikonfirmasi oleh fakta bahwa produk perangkat lunak lebih baik dikembangkan tidak di sepanjang jalur perangkat lunak open source dengan distribusi gratis (atau shareware), tetapi di sepanjang jalur komersial.

Flussonic sendiri, pada saat kami akan beralih ke sana, sudah ada selama sekitar tiga tahun. Pada awalnya, ia memiliki kode sumber terbuka, didistribusikan secara gratis, dan programmer mendapatkan uang hanya atas dukungannya. Pengembangannya tidak stabil, karena pengguna tidak melaporkan bug, itu tidak menarik bagi pengembang pihak ketiga untuk berpartisipasi dalam pengembangan proyek, ada sedikit uang dari dukungan. Kemudian kode diputuskan untuk ditutup, membuat perusahaan Erlivideo dan mulai mengembangkan produk komersial. Dan di suatu tempat di tahun setelah penciptaan perusahaan, kami mulai bekerja dengan mereka.

Kami adalah tempat uji coba untuk mereka, sebuah basis eksperimental, kami berbagi masalah dengan mereka, menawarkan fitur. Salah satu hal penting yang kami dapatkan dari mereka adalah pemain yang ditulis khusus untuk mesin mereka. Poin penting adalah bahwa kedua bagian ini - kernel dan klien - ditulis oleh pengembang yang sama, bahkan jika masalah muncul, mereka sangat cepat diperbaiki. Erlivideo telah tumbuh banyak selama ini, telah menjadi terkenal di industri IPTV, dan sekarang pada versi kelima kami semuanya telah bekerja secara stabil selama lebih dari setahun tanpa gangguan.

Uang: apa yang harus dibelanjakan dan cara menghasilkan uang

Setelah bertahun-tahun bekerja, situs tersebut menjadi sangat terkenal, populer, itu sendiri telah menjadi model untuk sumber daya tersebut. Kami secara berkala dihubungi untuk membeli solusi lengkap. Kami tahu berapa biaya keputusan ini hari ini, dengan mempertimbangkan pengalaman kami dan kesalahan yang dibuat. Secara umum, bagian server adalah sekitar 1 000 000 rubel, setiap aplikasi seluler adalah 500 000 - 600 000 rubel. Jumlah pembeli potensial ini menakutkan, mereka mengharapkan maksimum 100.000 - 200.000 rubel untuk semuanya. Ketika kita mulai melukis komponen perangkat lunak, biaya solusi tertentu, orang-orang bingung: misalnya, mengapa menghabiskan uang untuk menulis modul yang ada analog gratis di perpustakaan open source. Ya, hanya untuk membuatnya bekerja lebih baik!

gambar

Ini adalah contoh, tugas sederhana - untuk mengambil aliran dari kamera dan mendistribusikannya ke sejumlah besar pelanggan, hanya untuk melipatgandakannya tanpa mengubahnya. Untuk solusi gratis dari pustaka ffmpeg open source, ketika aliran dari sumber terganggu, seluruh proses berhenti dan harus dimulai ulang secara manual. Bayangkan ada lebih dari tiga ratus kamera di jaringan, jaringan yang agak besar, sesuatu terus-menerus terjadi - di suatu tempat di kamera daya akan gagal, di suatu tempat antara server dan kamera, koneksi akan terputus dan layanan hanya berhenti. Lebih mudah membayar uang untuk solusi berbayar yang dapat memantau kondisi dan memulai kembali jika perlu, daripada menggunakan solusi gratis, tetapi memantau dan memulai kembali secara manual.

Secara umum, menurut perkiraan kami, biaya pengembangan perangkat lunak berjumlah sekitar 40% dari semua biaya proyek. 60% sisanya adalah semua perangkat keras, termasuk kamera dan server, serta lisensi untuk aplikasi pihak ketiga yang digunakan.

Kami menghabiskan banyak uang untuk proyek kami ini, dan secara umum, sekarang kami tidak akan menolak untuk entah bagaimana menghasilkan uang darinya. Tetapi ini jelas bukan jalan monetisasi yang “langsung di dahi”. Setelah mempelajari sebagian besar model monetisasi, menjadi jelas bahwa mereka yang mendapatkan layanan secara langsung, memerlukan kerumitan tambahan dan umumnya tidak membayar. Sekarang ada solusi teknis yang dapat dengan mudah mengintegrasikan iklan langsung ke aliran video. Secara teknis, ini adalah solusi yang sangat baik, beban di server rendah, tidak mungkin untuk mem-bypass pemblokir iklan, dengan kehadiran kami dari 500.000 - 600.000 orang, audiens yang sangat besar akan menonton iklan video ini setiap bulan, tetapi membangun sistem penjualan di sini dan mengelola arus kas sangat mahal, dan kami tidak merencanakan monetisasi semacam itu.

Jadi kami menggunakan model tidak langsung, terutama untuk mempromosikan bisnis operator inti kami. Misalnya, ketika memasuki situs, kami menganalisis alamat IP pengunjung, dan kami menampilkan iklan layanan kami sendiri kepada penduduk setempat, tetapi tidak kepada klien kami. Kami memberikan aliran untuk ditampilkan pada sumber daya web pihak ketiga sebagai ganti iklan kami dengan mereka. Di saluran TV lokal, mereka bersedia menggunakan video dari kamera kami di blok berita utama dengan nama perusahaan kami. Jaringan hotel klien kami menyiarkan aliran video dari kamera kami di TV mereka, menerima mereka sebagai saluran TV, bagi mereka itu adalah layanan gratis tambahan, sebuah chip untuk para tamu.

Situs itu sendiri, dengan hampir 5 juta tampilan per bulan, kami gunakan sebagai platform periklanan, tetapi kami tidak menjual iklan - kami hanya menempatkan sendiri, atau klien legal kami, gratis, kami hanya meningkatkan loyalitas.

Di masa depan, kami berencana untuk mematuhi garis strategis yang sama - metode monetisasi tidak langsung, layanan gratis untuk pengunjung.

Kami menantikan pertanyaan, komentar, komentar, dan saran Anda mengenai artikel selanjutnya.

Source: https://habr.com/ru/post/id413929/


All Articles