<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=Zoneminder_-_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE</id>
	<title>Zoneminder - конвертирование видео - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=Zoneminder_-_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE"/>
	<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Zoneminder_-_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE&amp;action=history"/>
	<updated>2026-06-02T23:14:44Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.1</generator>
	<entry>
		<id>https://support.qbpro.ru/index.php?title=Zoneminder_-_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE&amp;diff=3262&amp;oldid=prev</id>
		<title>imported&gt;Vix в 13:30, 22 октября 2021</title>
		<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Zoneminder_-_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE&amp;diff=3262&amp;oldid=prev"/>
		<updated>2021-10-22T13:30:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 16:30, 22 октября 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l59&quot;&gt;Строка 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  $ ./mkvideo date cam&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  $ ./mkvideo date cam&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;дата может быть today, yesterday, 2010-12-01&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;дата может быть today, yesterday, 2010-12-01&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;название камеры с учетом регистра как задано в ZoneMinder&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;название камеры с учетом регистра как задано в ZoneMinder&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Если камера одна, прописать ей по-умолчанию в начале скрипта и в крон пихать без параметров сразу после 00:00 по местному времени, будет создаваться видеофайл всех событий за вчерашний день.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Если камера одна, прописать ей по-умолчанию в начале скрипта и в крон пихать без параметров сразу после 00:00 по местному времени,&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;будет создаваться видеофайл всех событий за вчерашний день.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Путем изменения запроса к MySQL можно легко собирать видео за определенный час, неделю, месяц (это правда долго)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Путем изменения запроса к MySQL можно легко собирать видео за определенный час, неделю, месяц (это правда долго)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://bevice.ru/posts/459.html источник]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://bevice.ru/posts/459.html источник]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Vix</name></author>
	</entry>
	<entry>
		<id>https://support.qbpro.ru/index.php?title=Zoneminder_-_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE&amp;diff=3261&amp;oldid=prev</id>
		<title>imported&gt;Vix: Новая страница: «Поиск и копирование всех файлов изменившихся с %date%,&lt;br&gt; Переименование картинок нужный фо...»</title>
		<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=Zoneminder_-_%D0%BA%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE&amp;diff=3261&amp;oldid=prev"/>
		<updated>2021-10-22T13:29:58Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Поиск и копирование всех файлов изменившихся с %date%,&amp;lt;br&amp;gt; Переименование картинок нужный фо...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Поиск и копирование всех файлов изменившихся с %date%,&amp;lt;br&amp;gt;&lt;br /&gt;
Переименование картинок нужный формат&amp;lt;br&amp;gt;&lt;br /&gt;
Кодирование видео-файла на основе найденных картинок.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Слабыми и неуклюжими местами показалась отсутствие гибкости в выборе временных диапазонов, точнее ограничения в них команды find. &amp;lt;br&amp;gt;&lt;br /&gt;
Ну и ненужное копированиие и переименование в два этапа.&amp;lt;br&amp;gt;&lt;br /&gt;
Да и зачем пользоваться find, если пути известны, а данные о файлах с картинками лежат в базе MySQL, а она очень приятно (вкупе с awk) работает в консоли.&amp;lt;br&amp;gt;&lt;br /&gt;
Короче родилось вот такое решение:&amp;lt;br&amp;gt;&lt;br /&gt;
 ~/bin/mkvideo:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # камера по-умолчанию, если запущен без параметров&lt;br /&gt;
 cam_default=Office1&lt;br /&gt;
 #дата по-умолчанию - вчера&lt;br /&gt;
 workdate_default=`date -d yesterday`&lt;br /&gt;
 workdate=$1&lt;br /&gt;
 cam=$2&lt;br /&gt;
 if [ &amp;quot;Z&amp;quot;$1 = &amp;quot;Z&amp;quot; ]; then&lt;br /&gt;
        workdate=$workdate_default&lt;br /&gt;
 fi&lt;br /&gt;
 if [ &amp;quot;Z&amp;quot;$2 = &amp;quot;Z&amp;quot; ]; then&lt;br /&gt;
        cam=$cam_default&lt;br /&gt;
 fi&lt;br /&gt;
 # путь до ZM&lt;br /&gt;
 inpath=/var/cache/zoneminder/events/${cam}&lt;br /&gt;
 # Где хранить картинки (временно)&lt;br /&gt;
 jpgpath=~/jpg&lt;br /&gt;
 # Куда складывать видеофайлы&lt;br /&gt;
 videopath=~/video&lt;br /&gt;
 mydate=`date -d &amp;quot;${workdate}&amp;quot; +%Y-%m-%d`&lt;br /&gt;
 filename=${cam}-${mydate}.avi&lt;br /&gt;
 zmdatabase=zm&lt;br /&gt;
 echo workdate is ${mydate}&lt;br /&gt;
 mkdir -p ${jpgpath} 2&amp;gt;/dev/null&lt;br /&gt;
 mkdir -p ${videopath} 2&amp;gt;/dev/null&lt;br /&gt;
 # Выборка нужных файлов из базы данных&lt;br /&gt;
 # по вкусу (если есть пароль) подкрутить парамерты mysql -u user --password=password&lt;br /&gt;
 files=`mysql ${zmdatabase} -s -e \&lt;br /&gt;
 &amp;quot;select eventid,right(concat('00',frameid),3) from Frames where date(timestamp)='${mydate}' order by eventid,frameid&amp;quot; \ &lt;br /&gt;
 | awk '{print($1&amp;quot;/&amp;quot;$2&amp;quot;-capture.jpg&amp;quot;);}'`&lt;br /&gt;
 i=0&lt;br /&gt;
 for f in ${files} &lt;br /&gt;
 do&lt;br /&gt;
     # проверка на размер файла, ZM иногда пишет картинки с нулевым размером&lt;br /&gt;
     # а ffmpeg потом спотыкается&lt;br /&gt;
     if [ `ls -l ${inpath}/${f} | awk '{print $5}'` -gt 0 ]; then&lt;br /&gt;
        i=$((i+1))&lt;br /&gt;
        p=$(printf %.8d $i)&lt;br /&gt;
        cp -p  ${inpath}/$f ${jpgpath}/$p.jpg&lt;br /&gt;
     fi&lt;br /&gt;
 done&lt;br /&gt;
 rm ${videopath}/${filename} 2&amp;gt;/dev/null&lt;br /&gt;
 # Кодируем видео из картинок&lt;br /&gt;
 ffmpeg -r 100 -an -i ${jpgpath}/%08d.jpg -vcodec h263p -b 1500k ${videopath}/${filename}&lt;br /&gt;
 #Удаляем старые файлы&lt;br /&gt;
 rm ${jpgpath}/*.jpg 2&amp;gt;/dev/null&lt;br /&gt;
&lt;br /&gt;
Качество сжатия и фпс ессно подкрутить по вкусу. Запускать с параметрами&lt;br /&gt;
&lt;br /&gt;
 $ ./mkvideo date cam&lt;br /&gt;
дата может быть today, yesterday, 2010-12-01&lt;br /&gt;
название камеры с учетом регистра как задано в ZoneMinder&lt;br /&gt;
Если камера одна, прописать ей по-умолчанию в начале скрипта и в крон пихать без параметров сразу после 00:00 по местному времени, будет создаваться видеофайл всех событий за вчерашний день.&lt;br /&gt;
Путем изменения запроса к MySQL можно легко собирать видео за определенный час, неделю, месяц (это правда долго)&lt;br /&gt;
&lt;br /&gt;
* [https://bevice.ru/posts/459.html источник]&lt;/div&gt;</summary>
		<author><name>imported&gt;Vix</name></author>
	</entry>
</feed>