Страница 3 из 3

Re: IP камера

Добавлено: Ср янв 19, 2022 7:24 pm
Chainik
Не знаю, сработает или нет, но можно попробовать автоматически обновлять страницу:

Код: Выделить всё

<div id="img_reload">
<img src="img.jpg" />
</div>
<script>

setInterval(function(){
var img_tag = '<img src="rtsp://192.168.0.100/user=user_password=password_channel=2_stream=1?img' +Math.random(0,100)+ '" />';
document.getElementById('img_reload').innerHTML = img_tag

}
,
1000);
</script>

Re: IP камера

Добавлено: Ср янв 19, 2022 7:42 pm
Диаф
Моргает кадр.
Попробовал следующую конструкцию:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Image Refresh</title>
</head>

<body>

<!-- Get the initial image. -->
<img id="frame" src="/img/img.jpg" width="440" height="400">

<script>
// Use an off-screen image to load the next frame.
var img = new Image();

// When it is loaded...
img.addEventListener("load", function() {

// Set the on-screen image to the same source. This should be instant because
// it is already loaded.
document.getElementById("frame").src = img.src;

// Schedule loading the next frame.
setTimeout(function() {
img.src = "/img/img.jpg?" + (new Date).getTime();
}, 1000/15); // 15 FPS (more or less)
})

// Start the loading process.
img.src = "/img/img.jpg?" + (new Date).getTime();
</script>
</body>
</html>

Показывает хорошо но после 20 кадров останавливается.

Re: IP камера

Добавлено: Ср янв 19, 2022 7:49 pm
Диаф
Заменил
1000/15
на
1000

Вроде пока нормально. погоняю сутки отпишусь :D

Re: IP камера

Добавлено: Чт янв 20, 2022 9:30 am
Диаф
По ссылке
var img_tag = '<img src="rtsp://192.168.0.100/user=user_password=password_channel=2_stream=1?img' +Math.random(0,100)+ '" />';
не находит изображение.

Работает такой код

<div id="img_reload">
</div>

<script>
setInterval(function(){
var img_tag = '<img src="/img/img.jpg?img' + Math.random(0,100) + '" width="440" height="400"/>';
document.getElementById('img_reload').innerHTML = img_tag
}, 500);
</script>

Но изображение моргает.

Как бы избавится от моргания и будет все просто замечательно .

Re: IP камера

Добавлено: Пт янв 21, 2022 7:58 pm
Диаф
Работает. Не идеально, но работает. Мож кому пригодится.

1. Переходим в каталог - cd /etc/init.d
2. Делаем файл - touch img.sh
3. Заполняем следующим содержимым :

#!/bin/bash
ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.100/user=user_password=password_channel=3_stream=1 -update 1 -y -vf scale=640:-1 /tmp/img.jpg

Где:
-update 1 - время обновления (1 секунда)
- y - всегда на все согласны
- -vf scale=640:-1 - размер картинки (соотношение сторон 640х524 пиксела)
/tmp/img.jpg - выходной файл

4. Делаем его исполняемым - cmod 775 img.sh
5. Переходим в каталог - /etc/systemd/system
6. Делаем файл - touch img.service
7. Заполняем следующим содержимым :

[Unit]
Description=img service
After=network.target
[Service]
ExecStart=/etc/init.d/img.sh
[Install]
WantedBy=multi-user.target

8. Запускаем - systemctl start img
9. Добавляем в автозапуск - systemctl enable img
10. Смотрим - ls /tmp
Должен появится файл img.jpg
11. Переходим в каталог - cd /var/www/html/img
12. Делаем симлинк - ln -s /tmp/img.jpg img.jpg
13. В мажордом делаем элемент тип HTML- камера
14. Дополнительный код JavaScript:

setInterval (function(){
var img_tag = "/img/img.jpg?img" + Math.random(0,1);
document.getElementById('img_reload').src = img_tag
}, 1000);

15. Код:

<div>
<img id="img_reload" src="/img/img.jpg" width="440" height="400"/>
</div>

Недостатки - запаздывает на 1 секунду от видео на DVR, иногда сбоит картинка.

Re: IP камера

Добавлено: Сб мар 12, 2022 10:50 pm
deemjd
Я правильно понимаю, что суть в том что скриптом через systemd регулярно создаются шоты с камеры и потом выводятся на страничку md?

А возможно ли скрипт запускать из php, настроив его внутри md, например в сценариях (например каждые 5 сек)?

Re: IP камера

Добавлено: Сб мар 12, 2022 10:58 pm
Chainik
Конечно, возможно.
Проще всего это сделать с помощью таймеров (https://mjdm.ru/forum/viewtopic.php?f=4&t=1534).

Re: IP камера

Добавлено: Сб мар 12, 2022 11:08 pm
Диаф
наверно и так можно. я не очень силен в php. делал через шел. мне так проще

Re: IP камера

Добавлено: Сб апр 30, 2022 5:50 am
Krz
deemjd писал(а): Сб мар 12, 2022 10:50 pm А возможно ли скрипт запускать из php, настроив его внутри md, например в сценариях (например каждые 5 сек)?
У меня реализовано так, На сцене создан HTML элемент

Код: Выделить всё

<img id="img_reload" width="571px" height="344px" src="http://X.X.X.X/webcapture.jpg?command=snap&channel=1&user=UUUUU&password=PPPPPP" />
X.X.X.X - IP камеры
UUUUU - имя пользователя
PPPPPP - пароль
А вообще строка зависит от вида камеры, в Инете к своей камере надо найти адрес получения снапшота

В строчке "Дополнительный код JavaScript"

Код: Выделить всё

setInterval(function(){document.getElementById('img_reload').src='http://X.X.X.X/webcapture.jpg?command=snap&channel=1&user=UUUUU&password=PPPPPP&math='+Math.random()}, 5000);
5000 - время 5 секунд (в миллисекундах)
Часть &math='+Math.random() камерой не учитывается, но нужна, чтобы URL адрес нового снапшота отличался от предыдущего, иначе скрипт не будет менять изображение, считая, что оно не поменялось.

Работает стабильно уже не первый год.
Для времени обновления можно создать объект с нужным свойством и тогда время обновления можно будет настраивать хоть на самой сцене.
Например

Код: Выделить всё

setInterval(function(){document.getElementById('img_reload').src='http://X.X.X.X/webcapture.jpg?command=snap&channel=1&user=UUUUU&password=PPPPPP&math='+Math.random()}, %Foto.pause%);