<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.elphel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vitaly+Lipatov</id>
		<title>ElphelWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.elphel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vitaly+Lipatov"/>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/wiki/Special:Contributions/Vitaly_Lipatov"/>
		<updated>2026-06-25T21:34:19Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://wiki.elphel.com/index.php?title=GenReS(%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD)&amp;diff=4871</id>
		<title>GenReS(плагин)</title>
		<link rel="alternate" type="text/html" href="https://wiki.elphel.com/index.php?title=GenReS(%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD)&amp;diff=4871"/>
				<updated>2008-06-26T09:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;Vitaly Lipatov: запятые расставлены&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ru|en=GenReS|cn=GenReS_cn}}&lt;br /&gt;
&lt;br /&gt;
GenReS - универсальный плагин для браузеров, основанных на Mozilla.&lt;br /&gt;
Он позволяет использовать внешние программы для отображения HTML-тэгов EMBED и OBJECT,&lt;br /&gt;
либо запускать их в полном окне браузера.&lt;br /&gt;
&lt;br /&gt;
Плагин вызывает скрипты-посредники, которые запускают нужные программы-просмотрщики и позволяют управлять ими и контролировать состояние из JavaScript.&lt;br /&gt;
Наборы функций и вызываемых программ могут быть изменены и дополнены путём изменения существующих и создания новых&lt;br /&gt;
управляющих скриптов.&lt;br /&gt;
&lt;br /&gt;
Существующий набор скриптов позволяет демонстрировать электронные документы с помощью [http://www.openoffice.org OpenOffice.org], видео, аудио и статические изображения, используюя программы display из [http://www.imagemagick.org/ ImageMagick], [http://www.MPlayerHQ.hu/ mplayer, mencoder] и [[Camera software#ElphelOgm|ElphelOgm]].&lt;br /&gt;
Изображения и видео можно масштабировать, зеркально отражать, и вращать.&lt;br /&gt;
Для звуковых и видео файлов и потоков работают функции приостановки, продолжения, пошагового просмотра, позицирования,&lt;br /&gt;
записи в виде набора файлов, а также другие описанные ниже.&lt;br /&gt;
&lt;br /&gt;
== Конфигурирование ==&lt;br /&gt;
&lt;br /&gt;
Конфигурационные файлы &amp;quot;~/.mozilla/genres/genres.conf&amp;quot; или &amp;quot;/etc/genres.conf&amp;quot; содержат основные настройки. Дополнительные настройки для для программ mplayer, mencoder и ElphelOgm содержатся в файле &amp;quot;~/.mozilla/genres/mplayer.conf&amp;quot;, который используется управляющим скриптом mplayer.pl. Файлы могут содержать комментарии начинающиеся с # как в shell.&lt;br /&gt;
&lt;br /&gt;
=== Настройки в genres.conf ===&lt;br /&gt;
&lt;br /&gt;
;mozillastreams={1|0} : использовать или нет потоки (и кэш) браузера для протоколов, которые он поддерживает (http, https и ftp); &lt;br /&gt;
;debuglevel={1|0} :  включить/выключить вывод отладочной информации;&lt;br /&gt;
;background={-1|0|1} : цвет объекта во аремя загрузки:      0 - чёрный, 1 - белый, -1 - по-умолчанию (серый).&lt;br /&gt;
&lt;br /&gt;
=== Настройки в mplayer.conf ===&lt;br /&gt;
&lt;br /&gt;
;out_file_once=шаблон : шаблон для имени фудио/видеофайла;&lt;br /&gt;
;out_file_jpegs=шаблон : то же для сохранения видео по кадрам в виде отдельных картинок (saveformat=jpeg);&lt;br /&gt;
;out_file=шаблон : шаблон для имени файла для тэгов с параметром save=auto;&lt;br /&gt;
;out_file_jpegs_auto=шаблон : шаблон для комбинации saveformat=jpeg save=auto;&lt;br /&gt;
;vo={x11, xv} :  видео-драйверы (см. man mplayer о параметре -vo);&lt;br /&gt;
;ao={arts, esd, alsa, oss} : аудио-драйверы (см. man mplayer о параметре -ao);&lt;br /&gt;
;not_ask={1|0} : больше не спрашивать имя файла для сохранения для тэгов с параметром save=auto;&lt;br /&gt;
;not_ask_jpegs={1|0} : то же для save=auto и saveformat=jpeg;&lt;br /&gt;
;frames=число : максимальное количество кадров в одном файле при записи для разбития на несколько файлов.&lt;br /&gt;
&lt;br /&gt;
== Cтатические параметры тегов ==&lt;br /&gt;
&lt;br /&gt;
;lowres : параметр прореживания для ускоренного DCT [0-3], 0-полное разрешение, 3-1/8&lt;br /&gt;
;width : ширина окна&lt;br /&gt;
;loop : повтор проигрывания (0 или не указано - бесконечно)&lt;br /&gt;
;fps : частота кадров&lt;br /&gt;
;frameskip : пропуск n кадров из каждых n+1 (только для rtp/mjpeg через ElphelOgm)&lt;br /&gt;
;framedelay : количество полных кадров удерживаемых в буфере (только для rtp/mjpeg через ElphelOgm)&lt;br /&gt;
;rotate : угол поворота изображения по часовой стрелке в градусах (0|90|180|270)&lt;br /&gt;
;mirror : зеркальносимметричное отображение относительно вертикальной оси (true|false)&lt;br /&gt;
;flip : то же относительно горизонтали (true|false); установка flip и mirror одновременно эквивалентна rotate=180&lt;br /&gt;
;saveformat=jpeg|ogm|avi : формат для записи видео (jpeg, ogm - только для rtp/mjpeg через ElphelOgm)&lt;br /&gt;
&lt;br /&gt;
== Динамически изменяемые переменные (можно указывать и как параметры тегов) ==&lt;br /&gt;
&lt;br /&gt;
;href : url файла или потока;&lt;br /&gt;
;src : пока просто другое имя для href;&lt;br /&gt;
;pause=1 или play=0 : приостановить проигрывание;&lt;br /&gt;
;pause=0 или play=1 : продолжить проигрывание;&lt;br /&gt;
;filepos=sec : переместиться на указанное время от начала в секундах или в процентах, может не работать, если mplayer по этому файлу не перемещается;&lt;br /&gt;
;framestep=что-нибудь : показать следующий кадр и остановиться (пошаговый просмотр);&lt;br /&gt;
;run=1 : запустить плеер если он прекратил работу (по ошибке или концу файла);&lt;br /&gt;
;run=0 : завершить плеер;&lt;br /&gt;
;save : запустить запись вместо показа;&lt;br /&gt;
:;save=ask : всегда спрашивать имя файла для записи;&lt;br /&gt;
:;save=auto : не спрашивать если пользователь укажет в диалоге.&lt;br /&gt;
&lt;br /&gt;
== Переменные статуса ==&lt;br /&gt;
Это то что выдаёт mplayer или mencoder, в настоящий момент стороки просто разделяются на две части по первому из символов '=' или ':'.&lt;br /&gt;
То что слева - имя переменной (пробелы и нелатинские буквы удаляются), справа - значение.&lt;br /&gt;
&lt;br /&gt;
;frame : сообщение плеера/рекордера о последнем кадре&lt;br /&gt;
;error : последнее сообщение об ошибке&lt;br /&gt;
&lt;br /&gt;
информация о статических картинках (от display)&lt;br /&gt;
&lt;br /&gt;
;imgtype : формат (JPEG, TIFF и т.д.)&lt;br /&gt;
;imgsize : размер картинки (например 800x600)&lt;br /&gt;
;filelength : длина файла (например 89kb)&lt;br /&gt;
&lt;br /&gt;
Возможны другие но они пока не используются.&lt;br /&gt;
&lt;br /&gt;
;run : особая переменная - состояние плеера 0 - незапущен, 1 - запущен, для режима записи становится в 0 когда пользователь отказался указать файл;&lt;br /&gt;
;pause, play : аналогично - состояние приостановки проигрывания, в том числе и по framestep.&lt;br /&gt;
&lt;br /&gt;
== Callback функции ==&lt;br /&gt;
&lt;br /&gt;
По приходу данных от плеера они передаются в переменные объекта и&lt;br /&gt;
становятся доступны из javascript. При этом если задана соответствующая&lt;br /&gt;
функция с именем &amp;quot;on&amp;amp;lt;имя переменной&amp;amp;gt;&amp;quot;, она будет вызвана.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;onrun:вызывается по запуску и остановке видеоплеера или процесса записи&lt;br /&gt;
;onerror:по приходу сообщения об ошибке&lt;br /&gt;
;onframe:при очередном кадре&lt;br /&gt;
;onmousedown и др стандартные  callback функции:уже предоставлены браузером и не нуждаются в какой-то обработке внутри плагина&lt;br /&gt;
&lt;br /&gt;
== Back-end программы ==&lt;br /&gt;
&lt;br /&gt;
В настоящий момент задействованы:&lt;br /&gt;
&lt;br /&gt;
* mplayer (компилировать с live555);&lt;br /&gt;
* mencoder из пакета mplayer;&lt;br /&gt;
* ElphelOgm - для получения mjpeg видео по чистому multicast или unicast rtp;&lt;br /&gt;
* display из пакета ImageMagick - для показа статических картинок;&lt;br /&gt;
* ooffice (OpenOffice.org) для показа документов.&lt;br /&gt;
&lt;br /&gt;
Чтобы задействовать ElphelOgm, должен быть установлен mime-type начинающийся с video/m&lt;br /&gt;
и URL должен быть вида: rtp://ip:port/ , где:&lt;br /&gt;
&lt;br /&gt;
;ip -: multicast ip потока&lt;br /&gt;
;port -: multicast port &lt;br /&gt;
&lt;br /&gt;
Unicast тоже можно принимать, для этого указывается адрес и порт получателя, и сервер также должен быть сконфигурирован чтобы постоянно слать udp видеопоток на этот адрес и порт. Динамическое изменение URL не поддерживается для RTP.&lt;br /&gt;
Вместо этого используйте последовательность команд: obj.run=0; obj.src=...; obj.run=1;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|+ '''Поддерживаемые MIME-типы и вызываемые программы'''&lt;br /&gt;
!MIME-тип!!Протокол||Приложение&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
application/x-display&lt;br /&gt;
image/tiff&lt;br /&gt;
image/x-tiff&lt;br /&gt;
image/x-tif&lt;br /&gt;
image/sun-raster&lt;br /&gt;
image/x-sun-raster&lt;br /&gt;
image/x-rgb&lt;br /&gt;
image/x-portable-pixmap&lt;br /&gt;
image/x-portable-graymap&lt;br /&gt;
image/x-portable-bitmap&lt;br /&gt;
image/x-portable-anymap&lt;br /&gt;
application/photoshop&lt;br /&gt;
application/x-photoshop&lt;br /&gt;
image/x-xcf&lt;br /&gt;
image/xcf&lt;br /&gt;
application/x-gimp&lt;br /&gt;
application/gimp&lt;br /&gt;
|http https ftp file||display&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
video/ogg video/x-ogg application/x-elphel-ogm&lt;br /&gt;
video/x-theora video/theora&lt;br /&gt;
video/mpeg video/mjpeg&lt;br /&gt;
video/x-mpeg video/x-mpeg2&lt;br /&gt;
video/quicktime video/x-quicktime application/x-quicktimeplayer&lt;br /&gt;
video/msvideo video/x-msvideo&lt;br /&gt;
application/x-drm-v2&lt;br /&gt;
application/x-mplayer2&lt;br /&gt;
video/x-ms-asf&lt;br /&gt;
video/x-ms-wm&lt;br /&gt;
video/x-ms-wmv&lt;br /&gt;
video/x-ms-wvx&lt;br /&gt;
video/sgi-movie&lt;br /&gt;
video/x-sgi-movie&lt;br /&gt;
video/dl&lt;br /&gt;
video/x-dl&lt;br /&gt;
video/sgi-movie&lt;br /&gt;
video/x-sgi-movie&lt;br /&gt;
video/anim&lt;br /&gt;
video/x-anim&lt;br /&gt;
video/fli&lt;br /&gt;
video/x-fli&lt;br /&gt;
&lt;br /&gt;
audio/mp3 audio/x-mp3&lt;br /&gt;
audio/mpeg2 audio/x-mpeg2&lt;br /&gt;
audio/mpeg3 audio/x-mpeg3&lt;br /&gt;
audio/mpeg audio/x-mpeg&lt;br /&gt;
application/ogg application/x-ogg&lt;br /&gt;
audio/ogg audio/x-ogg&lt;br /&gt;
audio/x-ms-wax&lt;br /&gt;
audio/wav audio/x-wav&lt;br /&gt;
audio/x-pn-wav audio/x-pn-windows-acm&lt;br /&gt;
&lt;br /&gt;
|http https ftp file||mplayer mencoder&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
application/x-elphel-ogm&lt;br /&gt;
video/mjpeg&lt;br /&gt;
|rtp||mplayer ElphelOgm&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
application/vnd.oasis.opendocument.chart&lt;br /&gt;
application/vnd.oasis.opendocument.database&lt;br /&gt;
application/vnd.oasis.opendocument.formula&lt;br /&gt;
application/vnd.oasis.opendocument.graphics&lt;br /&gt;
application/vnd.oasis.opendocument.graphics-template&lt;br /&gt;
application/vnd.oasis.opendocument.image&lt;br /&gt;
application/vnd.oasis.opendocument.presentation&lt;br /&gt;
application/vnd.oasis.opendocument.presentation-template&lt;br /&gt;
application/vnd.oasis.opendocument.spreadsheet&lt;br /&gt;
application/vnd.oasis.opendocument.spreadsheet-template&lt;br /&gt;
application/vnd.oasis.opendocument.text&lt;br /&gt;
application/vnd.oasis.opendocument.text-master&lt;br /&gt;
application/vnd.oasis.opendocument.text-template&lt;br /&gt;
application/vnd.oasis.opendocument.text-web&lt;br /&gt;
&lt;br /&gt;
application/vnd.sun.xml.calc &lt;br /&gt;
application/vnd.sun.xml.draw application/vnd.sun.xml.impress&lt;br /&gt;
application/vnd.sun.xml.math&lt;br /&gt;
application/vnd.sun.xml.writer&lt;br /&gt;
application/vnd.sun.xml.draw.template application/vnd.sun.xml.calc.template application/vnd.sun.xml.impress.template&lt;br /&gt;
application/vnd.sun.xml.writer.template&lt;br /&gt;
application/vnd.sun.xml.writer.global&lt;br /&gt;
&lt;br /&gt;
text/rtf application/rtf&lt;br /&gt;
application/x-msword&lt;br /&gt;
application/msword&lt;br /&gt;
application/vnd.ms-excel&lt;br /&gt;
application/vnd.ms-powerpoint&lt;br /&gt;
application/mspowerpoint&lt;br /&gt;
|http ftp file||ooffice&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Диагностика ошибок установки ==&lt;br /&gt;
Запустите скрипт mplayer.pl из командной строки. Он находится в /usr/lib/genres. Если все необходимые perl модули установлены,&lt;br /&gt;
он должен напечатать несколько строк вида: &amp;quot;переменная=значение&amp;quot; и ожидать ввода.&lt;br /&gt;
Если вместо этого вы получите сообщение &amp;quot;Can't locate Gtk2.pm in @INC&amp;quot; значит необходимо установить этот модуль из вашего дистрибутива или&lt;br /&gt;
с [http://cpan.org CPAN].&lt;br /&gt;
Другие ссылки: [http://gtk2-perl.sourceforge.net/ проект gtk2-perl], [http://cpan.org/modules/by-category/08_User_Interfaces/Gtk2/ gtk2-perl на CPAN], [http://freshmeat.net/projects/gtk2-perl/ gtk2-perl на freshmeat].&lt;br /&gt;
&lt;br /&gt;
Введите параметры как они представлены в HTML теге, но только по одному на строке и в конце добавьте run=1. Например:&lt;br /&gt;
 type=video/mjpeg&lt;br /&gt;
 url=rtp://232.168.0.9:20000/&lt;br /&gt;
 run=1&lt;br /&gt;
Если MPlayer запустился, то эта часть работает, попробуйте посмотреть страницу примера входящую в состав пакета genres с помощью браузера mozilla или firefox. Если вместо окна с видео вы видите серый прямоугольник, значит возможно надо исправить URL на доступный.&lt;br /&gt;
&lt;br /&gt;
Проверьте список установленных плагинов: &amp;lt;strong&amp;gt;about:plugins&amp;lt;/strong&amp;gt; если GenReS отсутствует, возможно genres.so лежит не втом месте.&lt;br /&gt;
&lt;br /&gt;
Плагин выдаёт много отладочной информации. Для её сбора запустите firefox из командной строки с перенаправлением вывода в файл.&lt;br /&gt;
Mozilla надо запускать с ключом -debug:&lt;br /&gt;
 mozilla -debug &amp;gt;&amp;amp; moz.log&lt;br /&gt;
Если причина не ясна, сожмите файл с помощью Gzip или bzip2 и отправьте мне на изучение.&lt;br /&gt;
&lt;br /&gt;
--[[User:Khlut|Sergey Khlutchin]] 15:49, 11 February 2006 (CST)&lt;br /&gt;
&lt;br /&gt;
== Создание управляющих скриптов ==&lt;br /&gt;
&lt;br /&gt;
Для каждого тэга плагин запускает отдельный процесс-посредник. Обмен данными осуществляется через трубы (стандартные для юникса неименованные каналы). Для процесса-посредника каналы присоединены к стандартным вводу и выводу. Стандартный вывод ошибок совпадает со стандартным выводом.&lt;br /&gt;
Файловый дескриптор №3 открыт для ввода (так же через трубу) данных из файла, на который указывает параметр тэга SRC. (Этот параметр распознаётся браузером.) Если он содержит URL с поддерживаемым протоколом и включен параметр [[#Настройки в genres.conf|mozillastreams]], файл будет передаваться через эту трубу.&lt;br /&gt;
Данные через стандартные ввод/вывод передаются в виде текстовых строк по одной команде в строке.&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|+ '''Команды от плагина скрипту'''&lt;br /&gt;
|имя=значение&lt;br /&gt;
|переменной тэга было присвоено значение&lt;br /&gt;
(фактически в javascript остаётся старое значение до ответа скрипта);&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|конец блока начальных значений параметров тэга;&lt;br /&gt;
|-&lt;br /&gt;
|PRINTEMBED&lt;br /&gt;
|требуется напечатать страницу содержащую тэг, в ответ следует передать данные в формате postscript;&lt;br /&gt;
|-&lt;br /&gt;
|PRINTFULL&lt;br /&gt;
|запрос печати для объекта в полном окне, все операции должен выполнить сам скрипт (включая диалоги);&lt;br /&gt;
|-&lt;br /&gt;
|EOF&lt;br /&gt;
|конец файла переданного через дескриптор №3 (труба не закрывается для возможности повторной передачи по запросу).&lt;br /&gt;
|}&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;6&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|+ '''Команды от скрипта плагину'''&lt;br /&gt;
|имя=значение&lt;br /&gt;
|присвоить значение параметру тэга, после чего будет вызвана функция (если определена) '''onимя()''';&lt;br /&gt;
|-&lt;br /&gt;
|OPEN&lt;br /&gt;
|послать с начала файл (через дескриптор №3), на который указывает параметр SRC;&lt;br /&gt;
|-&lt;br /&gt;
|CLOSE&lt;br /&gt;
|закрыть трубу со стороны плагина (скрипт больше не сможет пользоваться дескриптором №3);&lt;br /&gt;
|-&lt;br /&gt;
|AUTOCLOSE&lt;br /&gt;
|автоматически закрывать трубу при окончании файла данных;&lt;br /&gt;
|-&lt;br /&gt;
|DESTROY&lt;br /&gt;
|закрыть поток файла данных браузера;&lt;br /&gt;
|-&lt;br /&gt;
|{javascript}&lt;br /&gt;
|выполнить скрипт в контексте объекта тэга. &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vitaly Lipatov</name></author>	</entry>

	</feed>