Difference between revisions of "GenReS(плагин)"

From ElphelWiki
Jump to: navigation, search
m (Back-end программы)
(Back-end программы)
Line 53: Line 53:
 
В настоящий момент задействованы:
 
В настоящий момент задействованы:
  
* mplayer (компилировать с live555)
+
* mplayer (компилировать с live555);
* mencoder из пакета mplayer
+
* mencoder из пакета mplayer;
* ElphelOgm - для получения mjpeg видео по чистому multicast или unicast rtp.  
+
* ElphelOgm - для получения mjpeg видео по чистому multicast или unicast rtp;
 +
* display из пакета ImageMagick - для показа статических картинок.
  
 
Чтобы задействовать ElphelOgm, должен быть установлен mime-type начинающийся с video/m
 
Чтобы задействовать ElphelOgm, должен быть установлен mime-type начинающийся с video/m
Line 63: Line 64:
 
;port -: multicast port  
 
;port -: multicast port  
  
Unicast тоже можно принимать, для этого указывается адрес и порт получателя, и сервер также должен быть сконфигурирован чтобы постоянно слать
+
Unicast тоже можно принимать, для этого указывается адрес и порт получателя, и сервер также должен быть сконфигурирован чтобы постоянно слать udp видеопоток на этот адрес и порт. Динамическое изменение URL не поддерживается для RTP.
udp видеопоток на этот адрес и порт. Динамическое изменение URL не поддерживается для RTP.
 
 
Вместо этого используйте последовательность команд: obj.run=0; obj.src=...; obj.run=1;
 
Вместо этого используйте последовательность команд: obj.run=0; obj.src=...; obj.run=1;
  

Revision as of 08:06, 26 August 2006

in English | autotranslate | по-русски | 中文版

Cтатические параметры тегов

lowres 
параметр прореживания для ускоренного DCT [0-3], 0-полное разрешение, 3-1/8
width 
ширина окна
loop 
повтор проигрывания (0 или не указано - бесконечно)
fps 
частота кадров
frameskip 
пропуск n кадров из каждых n+1
rotate 
угол поворота изображения по часовой стрелке в градусах (0|90|180|270)
mirror 
зеркальносимметричное отображение относительно вертикальной оси (true|false)
flip 
то же относительно горизонтали (true|false); установка flip и mirror одновременно эквивалентна rotate=180

Динамически изменяемые переменные (можно указывать и как параметры тегов)

href 
url файла или потока;
src 
пока просто другое имя для href;
pause=1 или play=0 
приостановить проигрывание;
pause=0 или play=1 
продолжить проигрывание;
filepos=sec 
переместиться на указанное время от начала в секундах или в процентах, может не работать, если mplayer по этому файлу не перемещается;
framestep=что-нибудь 
показать следующий кадр и остановиться (пошаговый просмотр);
run=1 
запустить плеер если он прекратил работу (по ошибке или концу файла);
run=0 
завершить плеер;
save 
запустить mencoder вместо mplayer;
save=ask 
всегда спрашивать имя файла для записи;
save=auto 
не спрашивать если пользователь укажет в диалоге.

Переменные статуса

Это то что выдаёт mplayer или mencoder, в настоящий момент стороки просто разделяются на две части по первому из символов '=' или ':'. То что слева - имя переменной (пробелы и нелатинские буквы удаляются), справа - значение.

frame 
сообщение плеера/рекордера о последнем кадре
error 
последнее сообщение об ошибке

Возможны другие но они пока не используются.

run 
особая переменная - состояние плеера 0 - незапущен, 1 - запущен, для режима записи становится в 0 когда пользователь отказался указать файл;
pause, play 
аналогично - состояние приостановки проигрывания, в том числе и по framestep.

Callback функции

По приходу данных от плеера они передаются в переменные объекта и становятся доступны из javascript. При этом если задана соответствующая функция с именем "on<имя переменной>", она будет вызвана.

onrun
вызывается по запуску и остановке видеоплеера или процесса записи
onerror
по приходу сообщения об ошибке
onframe
при очередном кадре
onmousedown и др стандартные callback функции
уже предоставлены браузером и не нуждаются в какой-то обработке внутри плагина

Back-end программы

В настоящий момент задействованы:

  • mplayer (компилировать с live555);
  • mencoder из пакета mplayer;
  • ElphelOgm - для получения mjpeg видео по чистому multicast или unicast rtp;
  • display из пакета ImageMagick - для показа статических картинок.

Чтобы задействовать ElphelOgm, должен быть установлен mime-type начинающийся с video/m и URL должен быть вида: rtp://ip:port/ , где:

ip -
multicast ip потока
port -
multicast port

Unicast тоже можно принимать, для этого указывается адрес и порт получателя, и сервер также должен быть сконфигурирован чтобы постоянно слать udp видеопоток на этот адрес и порт. Динамическое изменение URL не поддерживается для RTP. Вместо этого используйте последовательность команд: obj.run=0; obj.src=...; obj.run=1;

Диагностика ошибок установки

Запустите скрипт mplayer.pl из командной строки. Он находится в /usr/lib/genres. Если все необходимые perl модули установлены, он должен напечатать несколько строк вида: "переменная=значение" и ожидать ввода. Если вместо этого вы получите сообщение "Can't locate Gtk2.pm in @INC" значит необходимо установить этот модуль из вашего дистрибутива или с CPAN. Другие ссылки: проект gtk2-perl, gtk2-perl на CPAN, gtk2-perl на freshmeat.

Введите параметры как они представлены в HTML теге, но только по одному на строке и в конце добавьте run=1. Например:

type=video/mjpeg
url=rtp://232.168.0.9:20000/
run=1

Если MPlayer запустился, то эта часть работает, попробуйте посмотреть страницу примера входящую в состав пакета genres с помощью браузера mozilla или firefox. Если вместо окна с видео вы видите серый прямоугольник, значит возможно надо исправить URL на доступный.

Проверьте список установленных плагинов: about:plugins если GenReS отсутствует, возможно genres.so лежит не втом месте.

Плагин выдаёт много отладочной информации. Для её сбора запустите firefox из командной строки с перенаправлением вывода в файл. Mozilla надо запускать с ключом -debug:

mozilla -debug >& moz.log

Если причина не ясна, сожмите файл с помощью Gzip или bzip2 и отправьте мне на изучение.

--Sergey Khlutchin 15:49, 11 February 2006 (CST)