A maneira mais fĂĄcil (para conhecedores de Linux) e mais barata de colocar uma cĂąmera IP em um site para um pequeno pĂșblico

Qual Ă© o principal problema das cĂąmeras IP modernas de baixo custo? VocĂȘ nĂŁo pode simplesmente adicionĂĄ-los ao seu site! Eles renderizam vĂ­deos em um formato completamente diferente do que os navegadores entendem. Sim, claro, vocĂȘ pode ir diretamente para a cĂąmera (e muitas vezes apenas com o IE), e muitos modelos tĂȘm uma "nuvem". Mas o problema continua - nĂŁo posso simplesmente pegar e colocar uma cĂąmera em um local, como uma simples foto!





Eu revisei muitas soluçÔes para organizar transmissÔes de cùmeras IP de diferentes fornecedores, incluindo soluçÔes OpenSource. A maioria tem uma desvantagem, que é muito crítica para mim: o sistema captura constantemente o fluxo da cùmera, mesmo se não houver espectadores.





No meu caso, foi necessĂĄrio exibir no site uma imagem de cĂąmeras remotas conectadas por meio de um canal 4G em uma ĂĄrea remota. A velocidade de upload nĂŁo ultrapassava 10 Mbps na melhor das hipĂłteses, mas era geralmente de 2 a 3 Mbps. Embora o trĂĄfego seja ilimitado, o provedor alertou oficiosamente que o consumo de mais de 200 GB de trĂĄfego certamente terĂĄ um impacto negativo, tal Ă© o condicional "ilimitado". Suponho que eles simplesmente "cortarĂŁo" a velocidade.





Algumas das soluçÔes encontradas nos espaços abertos do GitHub eram praticamente adequadas, mas não tinham uma boa documentação ou pareciam apenas complicadas e incÎmodas.





E eu precisava de um sistema de transmissĂŁo online com as seguintes propriedades:





  1. nĂŁo consome trĂĄfego na ausĂȘncia de visualizadores;





  2. nĂșmero mĂ©dio diĂĄrio simultĂąneo de espectadores - 1-3 pessoas;





  3. suporte, se nĂŁo todos, a maioria dos navegadores populares da Internet, incluindo os mĂłveis;





  4. tĂŁo simples e compreensĂ­vel quanto possĂ­vel;





  5. barato;





  6. de preferĂȘncia OpenSource.





Tendo uma rica experiĂȘncia com o programa FFMpeg, decidi tentar implementar todas essas funcionalidades por conta prĂłpria. Afinal, o que hĂĄ de errado com uma "bicicleta" feita com suas prĂłprias mĂŁos, se vocĂȘ tiver vontade e tempo?





« , iVideon?» . , , , . , , ( ). , ( , ). , , . , «iVideon-» .





, , , Google Chrome Mozilla Firefox, H.264- . « » FFMpeg :





-movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov







FFMpeg, MP4- moov moof .





:





«-c copy



» ;





«-an



» — (- , , );





«-t



» ( , );





«-rtsp_transport tcp



» — , RTP-, NAT ( );





«-probesize 32



» — ;





«-stimeout 5000000



» — - (5 ).





, PHP? . :





header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");







header("Cache-Control: post-check=0, pre-check=0", false);







header("Pragma: no-cache");







header('Accept-Ranges:bytes');







header('Connection:keep-alive');







header('Content-type: video/mp4');







PHP FFMpeg :





passthru("ffmpeg < > -f mp4 pipe:");







, , Safari Mac iOS. , MP4 , — . , «» Google Chrome, .





, — MJPEG , , MP4, — ? — , , , 
 , , . , .





, . , :





  1. : OGV WEBM;





  2. ();





  3. , , (, ), , ;





  4. - Mac. - — , . , «».  Safari — .





, , — . :





  1. , , Debian, Apache+PHP7 FFMpeg;





  2. SSL- ;





  3. www ;





  4. camera.php (; ) $key, $redirectToIfBackground , ;





  5. camera.php : camera.php?a=<rtsp- base64>&b=<>&c=<rtsp- base64>. «c» , .





, 5 . , base64 , http://base64.ru/, RTSP-.





, . MODX Revolution, , . CMS. $key $camera_server_url ( — , , ).





, :





{camera**RTSP-*RTSP- }







RTSP- . , . RTSP- , Onvif Device Manager. , « ».





. , , , . , «» camera.php, RTSP-, ( RTSP-), $key. , RTSP. «» . , . , 
 - «», .





A propĂłsito, pessoalmente, todas as minhas cĂąmeras estĂŁo conectadas via VPN (eu amo Wireguard) em uma rede, todos os links eu registro com "IP cinza". Conveniente, seguro, feliz.





Meu código é publicado sob a licença do MIT.





O projeto usa a biblioteca ifvisible.js desenvolvida por Serkan Yerßen, licenciada pelo MIT.





Download, 14 kB





Espelho





Github








All Articles