Sochi.Camera - um site com transmissões de mais de 300 câmeras instaladas em Sochi e seus arredores. O site e todo o serviço são sem fins lucrativos, criados e mantidos às suas próprias custas pelo provedor de Internet local
"Business Connection" , por quase 10 anos. Neste post, mostraremos como codificar a partir do zero absoluto; sobre a batalha com o YouTube (vencemos); por que o software livre é ruim e o serviço gratuito de streaming de vídeo é bom. Talvez no futuro, quando eles se voltarem para nós com a próxima proposta - escreva para 100-200 mil rublos. o mesmo serviço que Sochi. Câmera, em vez de mil palavras,
daremos a Rafael um link para esta postagem, para que todos possam entender imediatamente.
Primeira versão: design rasgado com pedaços do código de outra pessoaNosso projeto foi feito do zero, não havia serviços, modelos ou modelos semelhantes. Tudo o que fizemos, tivemos que fazer nós mesmos: reescrever módulos de buggy de bibliotecas de código aberto até inventar novas maneiras de montar câmeras. Não havia soluções prontas e, quando iniciamos o projeto, e agora elas também não estão na forma de modelos, são necessárias habilidades de programação bastante decentes.
Começamos, com nossos administradores de rede em tempo integral, que sabiam codificar um pouco. Quase desde os primeiros passos do projeto, gostaríamos de facilitar nossa vida. Mas a única versão "roubada" do site foi a primeira. O design foi emprestado do programa de desktop para visualização de fotos e vídeos, cujo nome ninguém se lembra agora. Na verdade, a idéia original do site era um cinema on-line com muitas salas, com um fundo escuro e uma tela grande com uma imagem de alta qualidade. O design deste programa com o nome esquecido era exatamente isso - um fundo escuro, várias visualizações, quando clicadas, uma tela grande era aberta.

O código foi retirado do Linux DVR, o código aberto Linux DVR de código aberto. Funcionava como um site, era possível acessá-lo através de um navegador e assistir a fluxos de câmeras. Em um código do Linux DVR, onde o motion jpeg foi usado, retiramos o design do programa visualizador de fotos e obtivemos a primeira versão do Sochi.A câmera é desajeitada, mas está funcionando.
Agora a quinta versão de Sochi está funcionando. O design do site mudou muito. A idéia principal de uma “sala de cinema escura”, no entanto, não desapareceu, mas agora o design é mais parecido com o vídeo Yandex do que com uma biblioteca de fotos e vídeos de mesa. No entanto, este é apenas um lembrete distante, não uma aparência rasgada. Foi anunciado um
concurso on -
line para a nova versão do site, o design geral e os pictogramas criados pelos vencedores foram usados na versão atual do site.

Obviamente, nem todos os usuários do site adotaram favoravelmente um novo visual; para os muito insatisfeitos, a versão antiga também foi deixada, no entanto, agora quase ninguém a visita.
Quanto ao código, a segunda e outras versões foram feitas de forma mais independente e acabaram sendo menos artesanais. Agora, o serviço é feito em script Java, a parte do servidor no Node.js, a parte do cliente no Angular.js. Temos apenas uma pessoa desenvolvendo um aplicativo de servidor, mas ele é um desenvolvedor profissional e o alto nível de nossos serviços atualmente é em grande parte seu mérito. A propósito, toda a nossa equipe está listada na seção
sobre o projeto em Sochi.Turbulência ao alternar do Flash para HTML5Quando Steve Jobs declarou guerra ao Flash, nosso site funcionou. Todos os fabricantes de navegadores começaram a abandonar gradualmente o HTML5, onde a demonstração de fluxos de vídeo ainda não era padronizada e tivemos grandes problemas. Sochi: A câmera pode funcionar por vários anos no Flash, mas em novas versões dos navegadores tudo funcionava de maneira instável, perdemos muitos usuários, porque, em vez de vídeos das câmeras, eles tinham uma janela escura.

Era necessário reescrever o site para novas versões de navegadores, e não apenas era necessário escrever um pedaço de código para cada versão separadamente, mas também era necessário determinar um monte de navegadores em tempo real. Aqui, nosso desenvolvedor escreveu uma construção que foi bem-sucedida. Claro, isso foi muito estressante e complicado o código. Assim, quando a situação com a padronização se resolve, redesenhamos novamente o serviço, eliminando essas muletas adicionais.
Um dos pontos fortes do nosso desenvolvedor reside no fato de ele estar constantemente envolvido na refatoração - otimiza o código, reduz a carga no servidor e nos canais de comunicação, monitora constantemente os recursos das novas versões das linguagens de programação.
A propósito, ao mesmo tempo, quando estávamos lutando com diferentes formatos de navegador, o YouTube estava resolvendo um problema semelhante, com duas pequenas diferenças: o YouTube exibia arquivos, não fluxos, o que tornava os programadores muito mais fáceis; e este é o YouTube, com uma enorme equipe de programadores, e não uma pequena empresa com um, embora seja um programador muito bom e até brilhante. Olhando agora para esses casos passados, podemos dizer que a turbulência não passou pior.
Além da abordagem correta de nosso programador principal quanto à eficácia do software, outro ponto muito importante foi a escolha de uma nova plataforma de streaming. Embora tenhamos saído de Wowza não por uma "razão técnica", mas por causa de sua política tarifária imodesta, tecnicamente também vencemos a longo prazo. Começamos a trabalhar com o Flussonic da Erlivideo em nossa quarta versão, cerca de 4 anos atrás, quando eles ainda não eram ouvidos. Em seguida, este produto passou de um código aberto semi-artesanal para um comercial pago normal.
A história deste produto é muito bem confirmada pelo fato de que os produtos de software são melhor desenvolvidos não no caminho do software de código aberto com distribuição gratuita (ou shareware), mas no caminho comercial.
O próprio Flussonic, quando estávamos prestes a mudar, já existia há cerca de três anos. No início, ele possuía código-fonte aberto, distribuído gratuitamente e os programadores ganhavam dinheiro apenas com seu apoio. Seu desenvolvimento foi instável, porque os usuários não relataram bugs, não era interessante a participação de desenvolvedores de terceiros no desenvolvimento do projeto, havia pouco dinheiro com o suporte. Decidiu-se então fechar o código, criar uma empresa Erlivideo e começar a desenvolver um produto comercial. E em algum momento do ano após a criação da empresa, começamos a trabalhar com eles.
Nós éramos um campo de testes para eles, uma base experimental, compartilhamos problemas com eles, oferecemos recursos. Uma das coisas importantes que recebemos deles é um jogador escrito especificamente para o mecanismo deles. O ponto importante é que ambas as partes - o kernel e o cliente - são escritas pelo mesmo desenvolvedor, mesmo que surjam problemas, elas são rapidamente corrigidas.
O Erlivideo cresceu bastante nesse período, tornou-se conhecido no setor de IPTV e, agora em nossa quinta versão, tudo está funcionando de forma estável há mais de um ano, sem falhas.
Dinheiro: o que gastar e como ganhar dinheiroDepois de muitos anos de trabalho, o site se tornou muito famoso, popular, tornou-se um modelo para esses recursos. Periodicamente, somos contatados para comprar uma solução completa. Nós descobrimos o que essa decisão nos custaria hoje, levando em conta nossa experiência e os erros cometidos. Em geral, a parte do servidor é de cerca de 1 000 000 rublos, cada aplicação móvel é de 500 000 a 600 000 rublos. Esses montantes de potenciais compradores são assustadores, eles esperam um máximo de 100.000 a 200.000 rublos para tudo. Quando começamos a pintar os componentes do software, o custo de certas soluções, as pessoas ficam perplexas: por exemplo, por que gastar dinheiro escrevendo módulos para os quais existem análogos gratuitos em bibliotecas de código aberto. Sim, apenas para fazê-los funcionar melhor!

Aqui está um exemplo, uma tarefa simples - pegar um fluxo da câmera e distribuí-lo para um grande número de assinantes, apenas para multiplicá-lo sem alterar. Para uma solução gratuita da biblioteca ffmpeg de código aberto, quando o fluxo da fonte é interrompido, todo o processo é interrompido e deve ser reiniciado manualmente. Imagine que existem mais de trezentas câmeras na rede, uma rede bastante grande, algo está acontecendo constantemente - em algum lugar da câmera a energia falha, em algum lugar entre o servidor e a câmera, a conexão é interrompida e o serviço é interrompido. É mais fácil pagar por uma solução paga que pode monitorar a condição e reiniciar, se necessário, do que usar uma solução gratuita, mas monitorar e reiniciar manualmente.
Em geral, de acordo com nossas estimativas, o custo do desenvolvimento de software representou cerca de 40% de todos os custos do projeto. Os 60% restantes são todos de hardware, incluindo câmeras e servidores, além de licenças para aplicativos de terceiros usados.
Gastamos muito dinheiro nesse projeto e, em geral, agora não nos recusaríamos a ganhar dinheiro com isso. Mas esse definitivamente não é um caminho direto, “na testa”, de monetização. Depois de estudar a maioria dos modelos de monetização, ficou claro que aqueles em que o serviço ganha diretamente, exigem aborrecimentos adicionais e geralmente não valem a pena. Agora, existem soluções técnicas que podem facilmente integrar a publicidade diretamente no fluxo de vídeo. Tecnicamente, essa é uma solução muito boa, a carga nos servidores é baixa, é impossível ignorar os bloqueadores de anúncios, com a presença de 500.000 a 600.000 pessoas, uma audiência muito grande assiste a este anúncio em vídeo todos os meses, mas criar um sistema de vendas em torno disso e administrar fluxos de caixa é muito caro, e não planejamos essa monetização.
Portanto, usamos modelos indiretos, principalmente para promover nosso negócio principal de operadoras. Por exemplo, ao entrar no site, analisamos o endereço IP do visitante e exibimos anúncios de nossos próprios serviços ao residente local, mas não ao nosso cliente. Damos transmissões para exibição em recursos da web de terceiros em troca de nossa publicidade com eles. Nos canais de TV locais, eles estão dispostos a usar o vídeo de nossas câmeras nos noticiários no horário nobre com o nome de nossa empresa. As redes de hotéis de nossos clientes transmitem fluxos de vídeo de nossas câmeras em suas TVs, recebendo-os como canais de TV; para eles, é um serviço gratuito adicional, um chip para os hóspedes.
O próprio site, com quase 5 milhões de visualizações por mês, usamos como plataforma de publicidade, mas não vendemos anúncios - apenas colocamos nossos próprios clientes legais ou nossos clientes gratuitamente, simplesmente aumentamos a lealdade.
No futuro, planejamos aderir à mesma linha estratégica - métodos indiretos de monetização, um serviço gratuito para visitantes.
Aguardamos suas perguntas, comentários, comentários e sugestões sobre o próximo artigo.