Cara termudah (untuk pengetahuan Linux) dan termurah untuk menempatkan kamera IP di situs untuk audiens kecil

Apa masalah utama dengan kamera IP murah modern? Anda tidak bisa begitu saja menambahkannya ke situs Anda! Mereka membuat video dalam format yang sama sekali berbeda dari yang dipahami browser. Ya, tentu saja, Anda dapat langsung ke kamera (dan seringkali hanya dengan IE), dan banyak model memiliki "cloud". Tapi masalahnya tetap - saya tidak bisa hanya mengambil dan menempatkan kamera di situs, seperti gambar sederhana!





Saya meninjau banyak solusi untuk mengatur siaran dari kamera IP dari vendor yang berbeda, termasuk solusi OpenSource. Sebagian besar memiliki satu kelemahan, yang sangat penting bagi saya: sistem secara konstan menangkap aliran dari kamera, bahkan jika tidak ada penonton.





Dalam kasus saya, perlu untuk menampilkan gambar di situs dari kamera jarak jauh yang terhubung melalui saluran 4G di daerah terpencil. Kecepatan unggah tidak naik di atas 10 Mbps pada saat-saat terbaik, tetapi biasanya 2-3 Mbps. Meskipun trafik tidak terbatas, penyedia secara tidak resmi memperingatkan bahwa konsumsi trafik lebih dari 200 GB pasti akan berdampak negatif, seperti kondisi "tak terbatas". Saya kira mereka hanya akan "memotong" kecepatan.





Beberapa solusi yang ditemukan di ruang terbuka GitHub secara praktis cocok, tetapi tidak memiliki dokumentasi yang baik atau tampak rumit dan tidak praktis.





Dan saya membutuhkan sistem penyiaran online dengan properti berikut:





  1. tidak mengkonsumsi lalu lintas tanpa adanya pemirsa;





  2. rata-rata jumlah penonton simultan harian - 1-3 orang;





  3. mendukung, jika tidak semua, maka sebagian besar browser Internet populer, termasuk browser seluler;





  4. sesederhana dan semudah mungkin;





  5. murah;





  6. sebaiknya OpenSource.





Memiliki pengalaman yang kaya dengan program FFMpeg, saya memutuskan untuk mencoba menerapkan semua fungsi ini sendiri. Pada akhirnya, apa salahnya "sepeda" yang dibuat dengan tangan Anda sendiri, jika Anda punya keinginan dan waktu?





« , 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. «» . , . , … - «», .





Omong-omong, secara pribadi, semua kamera saya terhubung melalui VPN (saya suka Wireguard) ke dalam satu jaringan, semua tautan saya daftarkan dengan "IP abu-abu". Nyaman, aman, bahagia.





Kode saya diterbitkan di bawah lisensi MIT.





Proyek ini menggunakan pustaka ifvisible.js yang dikembangkan oleh Serkan Yerşen, dilisensikan oleh MIT.





Unduh, 14 kB





Cermin





Github








All Articles