LINUX.ORG.RU

Сообщения Kesano

 

Через время отваливается демон

Добрый день вам. Столкнулся с проблемой: ОС FreeBSD 8.4 Release. Настроил motion на несколько IP камер. Motion выжираешь под себя порой почти половину процессора (тачка из разряда офисных компов, на ней из тяжёлого крутится только motion). Сделал PHP-прокси для просмотра видео, PHP читает поток с motion readfile("http://localhost:port/stream.mjpeg"); и отдаёт его в браузер в тэг <img>

last pid:  8373;  load averages:  0.76,  0.97,  0.91    up 0+12:42:08  20:49:13
43 processes:  1 running, 42 sleeping
CPU: 32.3% user,  0.0% nice,  1.1% system,  0.9% interrupt, 65.6% idle
Mem: 131M Active, 1614M Inact, 142M Wired, 36M Cache, 112M Buf, 42M Free
Swap: 3072M Total, 36K Used, 3072M Free

  PID USERNAME    THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
 8191 root          8  44    0 92164K 36176K select  0  17:28 64.84% motion
 1147 root          1  45    0  3580K  1892K select  0  13:16  1.56% natd
 1451 mysql        10  44    0 50880K 22288K sigwai  0   0:42  0.00% mysqld
 1273 bind          5  44    0 36012K 25904K kqread  0   0:18  0.00% named
 1475 root          1  44    0 22132K 10944K select  0   0:01  0.00% httpd

Через какое-то время motion тупо отваливается. Просто пропадает из процессов. В /var/log/messages только ошибки подключения к некоторым камерам (они в дауне), 70% камер работают. Вручную перезапускаю сервис /usr/local/etc/rc.d/motion start и всё работает как надо... Через время снова отваливается...

Подскажите, как найти и увидеть причину, по которой оно вылетает. Спасибо.

 , , ,

Kesano
()

ffmpeg, ffserver - замирает изображение через время

Настроен Motion. FFMPEG кушает из Motion поток и отдаёт его в SWF. Проблема в том, что через несколько секунд (или минут, зависит от размера буфера, установленного в ffserver.conf) картинка на странице сайта замирает и появляются артефакты... И всё... Если обновить страницу - ролик прогружается с нового места (т.е. запись идет нормально) и снова замирает через несколько секунд. Иногда нормально, иногда - ерунда описанная выше получается.

Как бы исправить?

ссылка на поток: http://85.238.99.190:8090/test.swf

конфиг:

Port 8090 
BindAddress 0.0.0.0
MaxClients 100
MaxBandwidth 20000
CustomLog /var/log/ffserver.log

<Feed feed1.ffm>
File /backup/tmp/feed1.ffm
FileMaxSize 10M
Launch ffmpeg -s 640x480 -r 10 -i http://localhost:8081/stream.mjpeg
</Feed>

<Stream test.swf>
Feed feed1.ffm
Format swf
VideoCodec flv
VideoFrameRate 10
VideoBitRate 100
VideoBufferSize 50000
VideoQMin 1
VideoQMax 5
VideoSize 640x480
NoAudio
</Stream>

Kesano
()

Не запускается (нормально) FFServer после обновления FreeBSD.

С дуру обновил систему с FreeBSD 8.2 до 8.4... И ядро обновил. Из-за добавления кучи левых текстов в ряд файлов в /etc перестали работать файрволл, named и т.д...

почистил конфиги от шлака, вроде всё заработало... но: Перестал запускаться ffserver. Motion работает нормально, а при попытке запуска ffserver происходят чудеса.

если запускать его так:

# /usr/local/etc/rc.d/ffserver start

то он пишет:

/usr/local/etc/rc.d/ffserver: WARNING: run_rc_command: cannot run /usr/local/bin/ffserver &

Если зайти в rc.d и запустить оттуда:

/usr/local/etc/rc.d # ffserver start
То он запускается, но потоковая картинка останавливается, ломается и рассыпается. Поток отдаётся в swf-файл, который я встраиваю в сайт. После обновления проигрывается 3 секунды видео и картинка замирает разломанная. До обновления всё работало норм, были другие проблемы, но они касаются больше конфигурирования выходного потока.

Я покопался, и нашёл, что это сообщение отдаётся файлом /etc/rc.subr а конкретно строкой 750:

if [ ! -x "${_chroot}${_chroot:+/}${command}" ]; then
warn "run_rc_command: cannot run $command"
return 1
fi

Я так понял проблема с chroot.

У файла /usr/local/bin/ffserver владелец root, права 0555 Прошу помочь с запуском

содержимое /usr/local/etc/rc.d/ffserver

#!/bin/sh
ffserver_enable="${ffserver_enable-NO}"

. /etc/rc.subr

name=ffserver
rcvar=ffserver_enable

command="/usr/local/bin/${name} &"
required_files=/usr/local/etc/ffserver.conf

load_rc_config ${name}
run_rc_command "$1"
не менялось, так установилось из портов.

FreeBSD SERVER1.lcl 8.4-RELEASE FreeBSD 8.4-RELEASE #0: Sat Jun 15 17:08:06 EEST 2013     Root@SERVER1.lcl:/usr/obj/usr/src/sys/KXMOD  i386

Что интересно: Если его запустить, как работает выше:

root@SERVER1:/usr/local/etc/rc.d # ffserver
ffserver version 0.7.15, Copyright (c) 2000-2013 the FFmpeg developers
  built on Jun 19 2013 16:29:15 with gcc 4.2.1 20070831 patched [FreeBSD]
  configuration: --prefix=/usr/local --mandir=/usr/local/man --enable-shared --enable-gpl --enable-postproc --enable-avfilter --enable-pthreads --enable-memalign-hack --enable-runtime-cpudetect --cc=cc --extra-cflags=' -I/usr/local/include' --extra-ldflags='-L/usr/local/lib ' --extra-libs=-pthread --disable-debug --disable-sse --disable-mmx --disable-libaacplus --disable-indev=alsa --disable-outdev=alsa --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libcelt --disable-libdirac --disable-libfaac --enable-libfreetype --enable-frei0r --disable-libgsm --enable-libmp3lame --enable-libopencv --enable-libopenjpeg --disable-librtmp --disable-libschroedinger --disable-libspeex --disable-libtheora --disable-vaapi --disable-vdpau --disable-libvo-aacenc --disable-libvo-amrwbenc --disable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
  libavutil    50. 43. 0 / 50. 43. 0
  libavcodec   52.123. 0 / 52.123. 0
  libavformat  52.111. 0 / 52.111. 0
  libavdevice  52.  5. 0 / 52.  5. 0
  libavfilter   1. 80. 0 /  1. 80. 0
  libswscale    0. 14. 1 /  0. 14. 1
  libpostproc  51.  2. 0 / 51.  2. 0
Он запускается...

Потом

root@SERVER1:/usr/local/etc/rc.d # /usr/local/etc/rc.d/ffserver restart
Stopping ffserver.
/usr/local/etc/rc.d/ffserver: WARNING: run_rc_command: cannot run /usr/local/bin/ffserver &

Т.е. при попытке рестарта по абсолютному пути она ЗАВЕРШАЕТ процесс, а запустить снова не может...

если запустать его по абсолютному пути - посылает на... Если заходить в папку rc.d и просто запускать ffserver ... даже без start - он запускается... если зайдя в rc.d запустить ffserver stop он игнорирует команду и всё равно запускает ffserver даже не говоря, что процесс запущен..

 , ,

Kesano
()

Нетривиальное в iptables. iptables VS ipfw

Добрый день. Прошу помочь в решении нетривиальной задаче.

До сего дня мои тазики\шлюзы были (и есть слава богу) на FreeBSD. Пользователи запускаются в интернет через ipfw+dummynet+nat... Курил маны по iptables но не обрёл понимания о порядке прохождения пакета по правилам и есть ли возможность динамически обновлять правила. в IPFW всё было просто и лаконично. Порядок прохождения пакета - понятен... Помогите прмером строго на описанных ниже правилах...

Правила для пользователей добавляются динамически... Пример набора правил:

100 divert natd ip from any to any via re0

10100 allow ip from 192.168.1.30 to any keep-state

10200 allow ip from 192.168.1.62 to any keep-state

60000 fwd 192.168.1.1,80 ip from 192.168.1.0/24 to any

65535 deny from all

правила с 10000 до 20000 - «зарезервированы» для пользователей. Если айпишника, с которого ломится пользователь, нет в списке правил - он весь форвардится на страничку с табличкой «Закрыто!»... Как только правило появилось - пошёл в интернет. При чём на лету можно сделать ipfw delete 10100, и айпи 192.168.1.30 снова маринуется сам в себе...

КАК это реализовать в iptables? Не могли бы вы показать аналог того, что описано выше, на iptables? с нумерацией правил и возможностью добавления\удаления на лету?

Если нет, что ещё можно использовать в Debian Linux для работы с траффиком так, как я описал?

прошу отнестись с пониманием. Спасибо.

 , dynamic rules,

Kesano
()

RSS подписка на новые темы