Saya akan segera membuat reservasi: selama pengoperasian solusi ini, kemungkinan berbagi arsip video menggunakan SAMBA ditemukan. Kesempatan ini tampaknya sangat nyaman bagi saya pribadi, dan saya memutuskan untuk menerapkannya dalam konteks ini. Tentu saja, seseorang mungkin memiliki pertanyaan: "Apakah ada Garis dan mengapa yang lainnya dibutuhkan?" - dalam kasus kami, solusi ini ternyata terlalu mahal.
- Jaringan perusahaan berbasis Mikrotik menggunakan VPN biasa
- Beberapa CCTV terdiri dari berbagai kamera dan perekam video
- Mesin Linux dengan server SAMBA-AD-DC dan WEB yang diterapkan di kantor pusat
Apakah perlu diingat bahwa semuanya sedang diubah dari RTSP ke HLS? Saya menginstal host Shinobi di Linux sesuai dengan instruksi ini . Tidak ada yang rumit dalam penginstalan, Anda hanya perlu menginstal git, beberapa dependensi, dan menjalankan script penginstalan. Secara teknis Jalur yang sama, hanya gratis. Mungkin cukup untuk pertama kalinya. Antarmukanya hanya tampak lebih nyaman, jika tidak sama. Setelah instalasi dan peluncuran, buka localhost : 8080 / super, masuk sebagai admin@shinobi.video dengan kata sandi admin dan buat entri utama untuk mengakses pemantauan.
Opsi penyimpanan default tidak berfungsi untuk saya. Selain itu, selama operasi, saya mencari pengaturan ini untuk waktu yang lama, tetapi urgensi memaksa saya untuk menonaktifkan cron.js (sudo pm2 stop cron) dan menggunakan alat Linux untuk membersihkan direktori arsip video.
Jumlah Hari untuk menyimpan Video - jumlah hari untuk menyimpan video.
Jumlah Hari untuk menyimpan Acara - jumlah hari untuk menyimpan acara (login, perubahan kata sandi, dll.).
Jumlah Hari untuk menyimpan Log - jumlah hari untuk menyimpan pesan sistem: kegagalan, kesalahan, inisialisasi.
Semua parameter ini disetel secara individual untuk setiap pengguna, sangat nyaman. Tapi ada juga API. Dengan menggunakan caranya, Anda bisa mendapatkan semua aliran dari monitor tertentu (monitor adalah sekumpulan aliran untuk penyiaran) dan menyajikannya masing-masing secara terpisah sebagai siaran online di halaman web. Pertama, Anda perlu menambahkan informasi tentang streaming dari kamera pengintai video ke pemantauan.
Mode - mode siaran: Rekam - perekaman, Jam tangan saja - hanya melihat.
Nama - nama
lokasi penyimpanan aliran video - lokasi penyimpanan arsip, jika Anda telah mengatur Rekam dalam Mode
Jalur URL Lengkap - tautan ke aliran rtsp itu sendiri. Untuk netsurveillance, ini biasanya tautan: rtsp: // IP: 554 / user = USER & password = PASSWORD & channel = CHANNELNUMBER & stream = 1.sdp? Real_stream - rtp-caching = 100
Informasi konsumsi sumber daya yang ditampilkan di Shinobi berbeda sangat dari yang ditampilkan oleh htop . Di antarmuka web, saya terus-menerus melihat memori setengah penuh, tetapi prosesor memuat, omong-omong, cukup konsisten dengan apa yang dapat dilihat dari konsol.
Sejauh yang diketahui, dimungkinkan juga untuk menggunakan GPU sistem untuk mengonversi aliran. Tetapi karena kami belum memasangnya, tidak ada cara untuk memastikannya. Semuanya terjadi melalui CPU. Kami telah mengubah 17 aliran, 3 di antaranya direkam secara lokal. Saya akan memberikan informasi di sini tentang prosesor kami:
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 36 bits physical, 48 bits virtual
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 30
Model name: Intel(R) Xeon(R) CPU X3440 @ 2.53GHz
Stepping: 5
CPU MHz: 1210.183
CPU max MHz: 2534,0000
CPU min MHz: 1200,0000
BogoMIPS: 5066.32
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
Jika Anda hanya perlu menghubungkan siaran online di halaman web, Anda harus terlebih dahulu menambahkan kunci API ke pengguna yang monitornya kami minati. Panduan API lengkap dapat ditemukan di situs web resmi aplikasi. Di bagian atas, letakkan kursor di email pengguna, klik, pilih item API.
Parameter utama bagi kami adalah IP yang Diizinkan (IP yang diizinkan). Akses saya hanya terbuka untuk jaringan lokal, tetapi jika Anda berencana untuk melakukan streaming streaming ke Internet global, Anda perlu menentukan 0.0.0.0/0 dan meneruskan port Shinobi ke luar.
, Shinobi RTSP , -. . : , 100% -, - RJ-45. , IP : - . AHD . , , ( ) — , .
Informasi tentang aliran web dapat diperoleh dengan permintaan GET sederhana, hasilnya diperoleh dalam format JSON, yang dapat dengan mudah diubah menjadi data. Contoh skrip PHP sederhana:
<?php
$url = array(
'host' => '192.168.2.104', # , Shinobi
'port' => '8080', # web- Shinobi
'api' => 'TyIp1yRhqPLnJmlDpMzAenWYqVW8vt', # API
'monitor' => 'f2xnMN0VAv' # ID ,
);
$link = file_get_contents("http://". $url['host'] .":". $url['port'] ."/". $url['api'] ."/monitor/". $url['monitor'] ."/");
foreach(json_decode($link) as $data) {
$source['title'][] = $data->name;
$source['url'][] = "http://". $url['host'] .":". $url['port'] . $data->streams[0];
$source['width'][] = $data->width;
$source['height'][] = $data->height;
$source['status'][] = $data->status;
}
print "<html>
<head>
<title> </title>
<link rel='stylesheet' href='https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css' integrity='sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T' crossorigin='anonymous'>
<link href='https://vjs.zencdn.net/7.2.3/video-js.css' rel='stylesheet'>
</head>
<body>
<div class='container' style='padding: 30pt 0;'>
<div class='row'>
<div class='col-sm-12' style='margin: 10pt 0 10pt;'>
<div class='card'>
<div class='card-body'>
<form action='' method='POST'>
<select class='form-control form-control-lg' name='streamId' onchange='this.form.submit()'>
";
for($i = 0; $i <= count($source['title']); $i++){
if( $_POST['streamId'] == $i) {
print "<option value=". $i ." selected>". $source['title'][$i] ."</option>";
} else {
print "<option value=". $i .">". $source['title'][$i] ."</option>";
}
}
if( isset($_POST['streamId']) ) {
$id = $_POST['streamId'];
} else {
$id = 0;
}
print " </select></form>
</div>
</div>
</div>
<div class='col-sm-12'>
<div class='card'>
<div class='card-body'>
<video id='hls-example' style='margin: 0 auto;' class='video-js vjs-default-skin' width='". $source['width'][$id] ."' height='". $source['height'][$id] ."' controls>
<source type='application/x-mpegURL' src='". $source['url'][$id] ."'>
</video>
<!-- <p class='card-text'>This is another card with title and supporting text below. This card has some additional content to make it slightly taller overall.</p> -->
<p class='card-text' style='text-align: center;'> <small class='text-muted'> : ". $source['status'][$id] ."</small></p>
</div>
</div>
</div>
</div>
<script src='https://vjs.zencdn.net/ie8/ie8-version/videojs-ie8.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.14.1/videojs-contrib-hls.js'></script>
<script src='https://vjs.zencdn.net/7.2.3/video.js'></script>
<script>
var player = videojs('hls-example');
player.play();
</script>
</div>
</body>
</html>";
?>
Untuk beberapa kamera, saya menetapkan mode Perekaman. Dalam kasus ini, selain untuk mengubah aliran, itu juga merekam dari RTSP ke hard drive lokal. Jika Default ditentukan dalam parameter Perekaman, rekaman akan disimpan di folder ./Shinobi/videos/ [MinitorID] / [[CameraID] . Bagi saya, beberapa folder dari monitor utama dapat diakses melalui jaringan dan dipasang melalui GPO untuk grup tertentu sebagai drive jaringan.
Mengapa ini dilakukan? Fitur logistik sederhana: kebetulan mobil besar dimuat dengan barang dan pergi ke kota lain, di mana dibongkar oleh pembeli, yang dapat mengatakan ada sesuatu yang hilang. Dan kebetulan di toko mereka mereka tidak dapat lagi menghitung sesuatu. Oleh karena itu, perekaman terpisah dibuat untuk gudang dari beberapa kamera yang sudah dalam format mp4. Ini dapat menghemat banyak waktu tanya jawab.