Бабайкина консолька
Давно собирался реализовать идею: уроки программирования online. Суть в том, чтобы на веб-страницу выложить flash-объект, в который транслируется всё, что я делаю в консоли. Человек смотрит, учится, а голосовое двустороннее общение можно организовать, например, посредством Скайпа. Недавно перенес свой домен на домашний шлюз и появилось всё необходимое, чтобы данный сервис запустить. Особых секретов здесь нет, но решил поделиться, а также закрепить навыки в письменной форме.
На картинке видна часть экрана монитора, поэтому открытая консоль на веб-странице выглядит несимметрично. На самом деле она размещена по центру и вообще ведет себя как надо. Вход на страничку для просмотра консоли осуществляется по https, через пароль (lighttpd, OpenDS). Сервис запускается с десктопной машины и работает только тогда, когда этого хочет владелец консоли, большую часть времени, во избежание атак, сервис выключен.
Рассмотрим как всё это организовано. Имеется две машины. Одна маломощная — шлюз, имеющий выход в Интернет, вторая — десктопная, с которой и демонстрируется консоль. На обеих установлен пакет ffmpeg.
На шлюзе настраиваем ffserver с таким конфигом (/etc/ffserver.conf):
На десктопе создаем скрипт /usr/bin/ffconsole:
Соединение ведется по ключам, чтобы не вводить пароль. Как их создать — Гугль в помощь. Скрипт killffserver тоже можно написать самостоятельно, но можно воспользоваться вот таким, сварганенным за 5 минут «на коленке»:
После запуска скрипта в том окне консоли, из которого он запускался, появится беспрерывная череда буковок и циферок. Это означает, что трансляция идет успешно. Для демонстрации учебной консоли придется открыть свежую вкладку или новое окно Xterm. Осталось только перетащить окно показываемой консоли в верхний левый угол экрана и вуаля — всё что вы делаете в ней кто-то другой (кому вы сообщили пароль для входа) может видеть в Интернете.
Да, совсем забыл. SWF-контент, генерируемый ffserver'ом, нужно включить в html-документ, например так:
Здесь нужно лишь заменить 99.99.99.99:9999 на реальные IP и порт вашего ffserver'а.
На картинке видна часть экрана монитора, поэтому открытая консоль на веб-странице выглядит несимметрично. На самом деле она размещена по центру и вообще ведет себя как надо. Вход на страничку для просмотра консоли осуществляется по https, через пароль (lighttpd, OpenDS). Сервис запускается с десктопной машины и работает только тогда, когда этого хочет владелец консоли, большую часть времени, во избежание атак, сервис выключен.
Рассмотрим как всё это организовано. Имеется две машины. Одна маломощная — шлюз, имеющий выход в Интернет, вторая — десктопная, с которой и демонстрируется консоль. На обеих установлен пакет ffmpeg.
На шлюзе настраиваем ffserver с таким конфигом (/etc/ffserver.conf):
Port 9999
BindAddress 0.0.0.0
MaxClients 10
MaxBandwidth 20000
#NoDaemon
<Feed console.ffm>
File /tmp/console.ffm
FileMaxSize 300K
</Feed>
<Stream console.swf>
Feed console.ffm
Format swf
VideoCodec flv
VideoFrameRate 10
VideoBufferSize 50000
VideoBitRate 100
VideoQMin 1
VideoQMax 5
VideoSize 736x480
PreRoll
Noaudio
</Stream>
На десктопе создаем скрипт /usr/bin/ffconsole:
ssh -i ~/.ssh/gate -p8022 [email protected] sudo su -c killffserver
ssh -i ~/.ssh/gate -p8022 [email protected] sudo su -c ffserver
ffmpeg -s 736x480 -r 5 -f x11grab -i 0:0 http://192.168.99.99:9999/console.ffm
ssh -i ~/.ssh/gate -p8022 [email protected] sudo su -c killffserver
Соединение ведется по ключам, чтобы не вводить пароль. Как их создать — Гугль в помощь. Скрипт killffserver тоже можно написать самостоятельно, но можно воспользоваться вот таким, сварганенным за 5 минут «на коленке»:
sudo kill `ps ax | grep ffserver | grep -v grep | grep -o -e '^ [0-9]*'`
После запуска скрипта в том окне консоли, из которого он запускался, появится беспрерывная череда буковок и циферок. Это означает, что трансляция идет успешно. Для демонстрации учебной консоли придется открыть свежую вкладку или новое окно Xterm. Осталось только перетащить окно показываемой консоли в верхний левый угол экрана и вуаля — всё что вы делаете в ней кто-то другой (кому вы сообщили пароль для входа) может видеть в Интернете.
Да, совсем забыл. SWF-контент, генерируемый ffserver'ом, нужно включить в html-документ, например так:
<object width="736" height="480">
<param name="movie" value="http://99.99.99.99:9999/console.swf"></param>
<param name="allowFullScreen" value="false"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://99.99.99.99:9999/console.swf"
type="application/x-shockwave-flash" allowscriptaccess="always"
allowfullscreen="false" width="736" height="480">
</embed>
</object>
Здесь нужно лишь заменить 99.99.99.99:9999 на реальные IP и порт вашего ffserver'а.
Комментарии (4)
RSS свернуть / развернутьПотоковый сервер своими руками!
Супер!!!
Gangsta
Gangsta
yababay
Bo-o-o!
Markony
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.