Як організувати сервіс телерадіомовлення в інтранет-мережі
Ви хочете дивитися телеканали з цифровою якістю, створювати свої власні трансляції, впровадити цікавий і корисний сервіс в мережі? Сучасні технології дозволяють зробити це вже зараз без використання дорогої апаратури.
Сервіс ТРВ створювався на базі мережі, спрощена схема якої представлена на рис. 1.
Як видно з малюнка, кінцеві вузли підключені до комутаторів лабораторій за технологією 100Base-T, які в свою чергу з'єднані з кореневим комутатором 100 / 1000Base-T. Сервери, в тому числі і сервер мовлення (Srv7), підключені до кореневого комутатора за технологією 1000Base-T. Таким чином, кореневою комутатор утворює швидкісну «стислу» магістраль між лабораторіями та серверами. Протокол IGMP підтримується кореневих комутатором і одним з комутаторів лабораторій. Використовується три види комутаторів рівня доступу (лабораторій): керовані 100Baset-T з підтримкою IGMP, некеровані 100Baset-T і некеровані 100Baset-T з uplink-портом 1000Baset-T. Ці три види комутаторів представлені, відповідно, комутаторами L1, L2 і LN./ Sbin / modprobe dvb-core dvb_shutdown_timeout = 0
/ Sbin / modprobe skystar2
/ Sbin / modprobe stv0299
/ Sbin / modprobe -r skystar2
/ Sbin / modprobe -r stv0299
/ Sbin / modprobe -r dvb-core
В ході експлуатації виявилася апаратна проблема у карти SkyStar2 (або ж "крива" реалізація драйверів). Проблема така, що при зникненні сигналу, причиною чого можуть бути різні атмосферні явища, рівень сигналу не завжди відновлюється, і як наслідок, потік з DVB-S карти SkyStar2 відсутня. Справа в тому, що дана картка не розраховувалася для інтенсивної безперебійної роботи, а є лише бюджетним аматорським варіантом супутникового тюнера.
Алгоритм вирішення проблеми наступний:
- Завершення додатків використовують DVB-S карту SkyStar2.
- Перезапуск драйвера DVB-S карти SkyStar2 (в цей момент карта инициализируется).
- Повторний запуск додатків (конкретно VLC).
Значення вихідного потоку (змінна thread) отримано експериментально на основі моніторингу мережевого інтерфейсу. Як тільки значення потоку стає нижче заданого порогу, виконуються дії описані вище.
thread = $ (tcpstat - o '% B' - F - s 7 | awk - F. '
sig 0 = `dvbsnoop - n 1 - timeout 10 - s signal - adapter 0
| tail - n 1 | awk - F \ '
| tail -n 1 | awk -F \ '' `; sig2 = `dvbsnoop -n 1 -timeout 10 -s signal -adapter 2
| tail -n 1 | awk -F \ '' `;
echo $ sig0 $ sig1 $ sig2 $ thread >> / usr / dvb / log
if [$ thread - lt 3300000]; then