Использование czap для настройки DVB-C TV тюнера

Категория: video for Linux

Первоначально была необходимость в использовании видео потока с ТВ тюнера в качестве входного потока для ffmpeg`а. Но оказалось, что ffmpeg не имеет встроенных средств для управления тюнером в отличии, скажем, от VLC. После недолгих попыток решение нашлось.

Для начала надо просканировать сетку вещания, для определения параметров вещания каналов. Делается это посредством утилиты w_scan:

w_scan -f c -C UTF-8 -X >> czap.conf

-f c - сканирует "кабельную" сетку

-С UTF-8 - задает кодировку на выходе

-X - задает вывод в формате для tzap/czap/xine

листинг czap.conf:

.....
121 TV1000(Orion Express):482000000:INVERSION_AUTO:6875000:FEC_1_2:QAM_128:3504:4504:121
122 TV1000 Action(Orion Express):482000000:INVERSION_AUTO:6875000:FEC_1_2:QAM_128:3503:4503:122
....

Теперь можно настроить тюнер на необходимый канал:

czap -c ./czap.conf -r -p "121 TV1000(Orion Express)"

флаги -r и -p добавят в выходной видео поток необходимые TS заголовки, тем самым к потоку будет легче цепляться и не тратить время на его анализ. Если все прошло удачно, в вывод czap будет постоянно выкидывать статусные сообщения.

Теперь, если необходимо, выходной поток можно подцепить ffmpeg`ом:

ffmpeg -i /dev/dvb/adapter0/dvr0 ......

Хотелось бы отметить, что w_scan`ом так и не удалось просканировать частоты ниже 474МГц, хотя вещание на них осуществлялось. Если кто знает решение - поделитесь в комментариях.

Теги: czap ffmpeg w_scan v4l

Комментарии (0)


library 'crypto' is required for OpenSSL

Категория: system

При сборке из исходников с последующем использованием SSL в пакете при возникновении ошибки "library 'crypto' is required for OpenSSL", обычно достаточно установить пакет libssl-dev, но не всегда это помогает. Для сборки, бывает необходимо доустановить еще пару пакетов:

 apt-get install devscripts build-essential

Теги: squid ssl

Комментарии (0)


SquidGuard не делает редирект

Категория: system

В случае использования связки SQUID + SquidGuard, бывает, что для некоторых URL, запрашиваемых клиентом не срабатывает редирект (в случае обращения к запрещенному адресу), хотя в access логах сквида идет перенаправление "....HIER_DIRECT....", а в логах Guard`a видно отработку редиректа. На лицо глюк rewrite`ора. Проблема решилась, добавлением в конфиг кальмара правила:

url_rewrite_access allow all

Теги: squid squidguard

Комментарии (0)


SQUID | ERROR: URL-rewrite produces invalid request

Категория: system

Данная ошибка возникает в старых версиях SQUID`а. Накатите более новую версию 3.4.х+. Имейте ввиду, что конфиги у разных версий немного различаются.

Теги: squid

Комментарии (0)


Топ процессов по потреблению памяти в Linux

Категория: system

Кто сжирает всю память? Какой процесс больше всего потребляет памяти? Сколько процесс занимает оперативной памяти? - частые вопросы системного администратора Linux. Существует множество утилит выводящие информацию о процессах в системе с указанием их параметров, в том числе и занимаемой памяти. А ведь в подавляющем большинстве дистрибутивов предустановленна программа ps - выводящая информацию о запущенных процессах в системе. С помощью нее легко получить ответы на наши вопросы:

ps -eo size,pid,user,command --sort -size | awk '{ ms=$1/1024 ; printf("%.1f Mb ",ms) } {print $0}'

Данная команда построчно выведет список процессов, отсортированных по объему занимаемой памяти. Так же будут указаны PID процесса, от какого пользователя запущен процесс и его команда запуска:

SIZE(Mb)       SIZE       PID     USER             COMMAND

1040.26 Mb  1065224 28599     username  /usr/lib/firefox/firefox

и т.д

Чтобы отобразить только топ 10, скармливаем вывод утилите head:

ps -eo size,pid,user,command --sort -size | awk '{ ms=$1/1024 ; printf("%.1f Mb ",ms) } {print $0}'  | head

Теги: memory ps

Комментарии (0)


Поиск левых DHCP в сети

Категория: system

Бывает, что в локальных сетях заводится некорректно настроенное оборудование или кто-то решил себя потешить, отвечая всем желающим на их DHCP DISCOVER запросы. Чаще всего, в таких случаях, сетевое устройство получает неправильные настройки, тем самым блокируется его работа в сети. Можно, конечно, воспользоваться tcpdump`ом и проанализировать OFFER ответы и определить негодяя, но не всегда это удобно. Тем более если для этого есть специализированные утилиты, хоть их и единицы. В своей практике, для поиска "левого" DHCP я использую программу dhcpdrop тем еще приятную - с открытым исходным кодом. Утилита может использоваться как для анализа, так и для непосредственного подавления левого DHCP сервера - делается это путем забивания всего ip пула мещающего работе dhcp сервера, вследствие отсылки запросов к этому серверу на получение адреса/настроек со случайно сгенерированным MAC адресом, пул заполняется и сервер перестает отвечать на запросы. Более детальное описание см. на странице проекта.

dhcdrop -i eth0 -t -T 10 "fc:cc:cc:cc:cc:aa"

Вышеприведенная команда отправит DISCOVER запросы с МАСом "fc:cc:cc:cc:cc:aa" с интерфеса eth0 с таймаутом 10 секунд. Таймаут не следует задавать слишком малым, ибо не все сервера быстро отвечают, да и не обязаны - т.к. по спецификации, на сколько мне известно, время ответа на запросы не ограничивается каким-либо значением и даже при необходимости dhcp сервер имеет право "молча" дропнуть пакет, скажем если он перегружен. Как поведет себя dhcp клиент в таких случаях зависит от его алгоритмов работы. После отсылки запроса, происходит прослушка интерфеса на предмет OFFER пакетов - и на выходе утилиты мы получаем информацию (IP и MAC) ответивших на запрос серверах:

DHCP--SRV: 10.0.0.1 (IP-hdr: 10.0.0.1) SRV ether: 11:22:33:44:55:66, YIP: 10.0.0.189

Так же рассматриваемая утилита, пригодилась мне для мониторинга скорости ответов DHCP серверов посредством zabbix, я слегка модифицировал исходный код - теперь на выходе отображается и интервал между discover и offer пакетами. Затем значение парсится и отпрвляется в заббикс. Если нужны исходники, пишите в комментариях - поделюсь.

Теги: zabbix dhcp dhcdrop

Комментарии (0)


Проксируем трафик Firefox через SSH

Категория: system

При необходимости использования удаленного сервера в качестве web proxy проще всего воспользоваться SSH туннелем, используя его в качестве SOCKS proxy.

ssh -D localhost:6666 login@remote_server

После подключения, на локальном хосте по адресу localhost:6666 имеем собственный SOCKS5 прокси сервер. Для перенаправления всего трафика Firefox`a через прокси необходимо воспользоваться аддоном, я использую "Socks Proxy". В настройках указываем адрес прокси сервера, в нашем случае локального и, при необходимости, исключаем хосты к которым будем ходить напрямую - минуя прокси.

Теги: ssh firefox proxy

Комментарии (0)


Увеличиваем число последних событий в панели ZABBIX

Категория: zabbix

last 20 issues of zabbix dashboard

По умолчанию на панели zabbix отображается последние 20 событий (триггеров в состоянии ПРОБЛЕМА). При необходимости, это количество можно изменить редактированием файла настроек фронтенда zabbix сервера:

zabbix/include/defines.inc.php

и в нем задаем константе DEFAULT_LATEST_ISSUES_CNT необходимое значение.

Профит!

P.S. Также в рассматриваемом файле много других параметров для кастомизации zabbix фронтенда.

Теги: zabbix dashboard last 20 issues

Комментарии (0)


Анализ ключевых кадров в видеопотоке

Категория: video for Linux

При просмотре видеофайла и его последующей перемотки или, скажем, при переключении с одного онлайн видеопотока в плеере на другой, можно заметить что в одних случаях воспроизведение начинается сразу, а в других по прошествие некоторого времени. Возникает вопрос - почему? Оказывается, нюанс заключается в так называемых ключевых кадрах или их еще называют кадры I-типа. Дело в том что, видеопоток состоит из кадров-статичных изображений быстро сменяющих друг друга, другими словами при просмотре мы видим пошаговую анимацию. Так вот, для экономии места и следовательно, для уменьшения битрейта обычно делаю так: записывают полный кадр (ключевой), а в последующих кадрах записывается информация об изменяющихся областях в сравнении с предыдущим кадром. Логично, что так долго продолжаться не может т.к. количество изменений увеличивается или вовсе требуется внести новые элементы, тогда кодер вставляет очередной ключевой кадр и процесс повторяется. При недостаточной частоте опорных кадров изображение может начать "сыпаться" или застывать.

Получается, что воспроизведение видеопотока не начнется до тех пор, пока декодер не получит ключевой кадр, с этим и связана пауза в начале просмотра.

Для анализа последовательности кадров в видеопотоке, можно воспользоваться Linux утилитой ffprobe:

ffprobe -i путь_до_видеопотока_или_файла -select_streams v -show_frames -show_entries frame=pict_type -of csv

На выходе в реальном времени можно наблюдать сменяющуюся последовательность кадров с указанием его типа:
frame,I
frame,B
frame,B
frame,P
frame,B
frame,B

Обычно ключевые кадры вставляют раз в секунду или, другими словами, через каждые 23 кадра. Но некоторые "деятели" для снижения битрейта и в конечном счете для экономии трафика, увеличивают интервал вставки ключевых кадров - в итоге приводящий к проблемам описанных выше.

 О других типах кадров можно почитать на википедии...

Комментарии (0)


Воспроизведение DVB-C каналов в VLC

Категория: video for Linux

Для воспроизведения телевизионных каналов, принимаемых через TV-тюнер в linux я использую VLC. Зная параметры, принимаемого канала, можно из консоли его вспроизвести:

vlc dvb-c:// :dvb-frequency=346000000 :dvb-modulation=128QAM :dvb-srate=6875000 --dvb-adapter=0 --program=3

Пояснения к параметрам не нужны - думаю и так все понятно.

Комментарии (0)


Powered by emlog