Журнал LinuxFormat - перейти на главную

LXF118:Spoutnik

Материал из Linuxformat
Перейти к: навигация, поиск
Спутники и Linux Любимые программы в любимой ОС в цифровом качестве

Содержание

ТВ: Охотимся за спутником

spoutnik
Часть 1: Избавьтесь от телевизора и абонентской платы за антенну – ведь у вас есть компьютер! Андрей Прахов расскажет, что потребуется сверх этого.

Итак, вы стали счастливым обладателем комплекта спутникового оборудования и спешите домой в предвкушении качественного Интернета, а может быть, большого количества интересных телеканалов. Как бы то ни было, сперва предстоит тяжелая работа по установке и настройке приобретенного оборудования. Многие предпочитают заняться этим самостоятельно. Вот только не спешите! Определитесь сначала с провайдером, и соответственно, со спутником, на который будет настроена система. Не секрет, что на пути «тарелки» не должно быть экранирующих объектов. Если вы желаете работать, к примеру, со спутником Express AM22, а в месте его предполагаемого нахождения находится глухая стена высотного дома, то в лучшем случае вам грозит подслушивание соседских разговоров, а не пляски под музыку MuzTV. Ознакомьтесь с предложениями провайдеров и списком поддерживаемых спутников и подберите себе наиболее подходящий.

Интернет пестрит большим количеством статей по монтажу и настройке «тарелок». И вот мой вам первый совет – доверьте это дело специалисту. Если собственно установка тарелки и платы в компьютер не особенно сложна, то процесс поиска необходимого спутника сопряжен с большими трудностями. Не рассчитывайте обойтись обычным компасом и полузабытыми школьными знаниями об ориентировании на местности. Необходима специальная аппаратура и солидный опыт в этой области деятельности. Небольшой перекос «тарелки» на несколько миллиметров может означать ухудшение качества, а то и вовсе потерю сигнала. Если вы все же решили обойтись собственными силами, то приготовьтесь к долгому и изнурительному стоянию на свежем воздухе. Обычно процесс самостоятельной настройки выглядит следующим образом: один человек сканирует предполагаемое место нахождения спутника по горизонтали и вертикали, медленно сдвигая тарелку, другой сидит за компьютером и следит за качеством сигнала. Прибавьте к этому свойство компьютерных тюнеров не мгновенно реагировать на изменения уровня, и вы прочувствуете всю прелесть подобных экспериментов.

Часть 1 Железный вопрос

А будет ли это работать? Вот, наверное, главный вопрос, который интересует любого линуксоида. Современное ядро способно обнаружить и подобрать подходящие модули для достаточно большого количества тюнеров DVB-S. Но, как говорится, в семье не без урода. Вполне вероятно, что свежекупленная плата не горит желанием работать в Linux (подробности ищите в Сравнении LXF106), а на сайте разработчика в лучшем случае висит обещание обеспечить поддержку этой системы когда-нибудь в будущем. К счастью, мир не без добрых людей, и если хорошенько поискать, то можно найти хоть и «самопальные», но вполне работающие драйвера.

Самый простой способ выяснить, определило ли ядро тюнер – это заглянуть в каталог /dev. Просто наберите в командной строке:

$ ls /dev

Если вы увидите в выводе папку dvb, то можете смело пропустить все написанное ниже и перейти к следующей части статьи. Тем, кому не повезло, придется читать дальше.

Не секрет, что многие устройства DVB известных и не очень известных брендов основаны на распространенных чипах третьих фирм. Иногда бывает достаточно подобрать модули, обеспечивающие работу сторонней платы, построенной на том же чипе, что и ваша. Однако для этого необходимо выяснить, какая микросхема используется в приобретенном тюнере. Для этого нет нужды разбирать компьютер и рассматривать плату. Linux имеет полезную команду, позволяющую определить все устройства, расположенные на шине PCI. Откройте терминал и введите следующее:

$ lspci

Эта команда выведет список периферийных устройств вашего компьютера, среди которых необходимо отыскать DVB-тюнер. Как правило, помимо названия фирмы-производителя приводится и наименование используемого чипа. Если ваше устройство не является платой PCI, а подключается через USB, то следует использовать команду lsusb.

Ищите драйвер

Скорая помощь

По умолчанию, команды lspci и lsusb доступны обычным пользователям и расположены в каталоге /usr/bin. Если вместо вывода списка устройств терминал выдает сообщение об ошибке, то, вполне вероятно, у вас они доступны только для пользователя root. Для перехода в режим суперпользователя служит команда su или связка sudo lspci – последний вариант используется в дистрибутивах на основе Ubuntu. Кроме того, можно использовать команду whereis lspci, она указывает местонахождение исполняемого файла.

Итак, с названием чипа мы разобрались. Что же дальше? Вполне вероятно, что необходимые для поддержки устройства модули уже имеются в системе, но по каким-то причинам не были загружены. Значит, нужно отыскать по известному названию драйвер и попытаться запустить его вручную.

Имеющиеся модули ядра для DVB располагаются, как правило, в каталоге /lib/modules/номер_ядра/kernel/drivers/media/dvb/. Просмотреть их можно командой ls:

# ls /lib/modules/2.6.25-std-def-alt8.M41.1/kernel/drivers/media/dvb/
b2c2 cinergyT2 dvb-core frontends siano ttusb-budget
bt8xx dm1105 dvb-usb pluto2 ttpci ttusb-dec

Поддерживаемые устройства сгруппированы по названию чипа или способу подключения. К примеру, каталог dm1105 содержит драйвера для тюнеров Tevii S-400 и DVBWorld. Если вы определились с подходящим драйвером, то самое время попробовать загрузить его. Для этого служит команда modprobe, выполняемая из-под root. Например, для платы Tevii S-400 скомандуйте:

# modprobe s400

Обслуживание DVB-устройства обеспечивается не одним, а несколькими модулями, но об этом можно не беспокоиться, так как при загрузке основного модуля автоматически «поднимутся» и вспомогательные. Чтобы убедиться в этом, используйте команду lsmod. Она предназначена для вывода списка модулей, подгруженных в ядро. Рациональнее всего использовать lsmod в связке с командой grep, которая умеет фильтровать поток информации по заданному критерию:

# lsmod | grep dvb
dvb_pll          13448 1
dvb_core           93696 2 s400,stv0299
i2c_core          28820 9 dvb_pll,s400,i2c_algo_bit,v4l2_common,tveeprom,stv0299,nvidia,i2c_nforce2

Если после выполнения команды modprobe в каталоге /dev обнаружится заветная папка dvb, то считайте задачу выполненной. При неудаче можно попробовать использовать другие подходящие драйвера, только не забудьте перед этим удалить из системы ненужные. Для этого служит команда rmmod. Например:

# rmmod -f s400

Параметр -f (force) служит для жесткого удаления модуля, даже если он используется другими программами. Естественно, удалить нужно также и те модули, что загрузились дополнительно.

Что же делать, если ни один из потенциальных модулей, имеющихся в системе, не подошел для вашей карты? Некоторые продвинутые пользователи могут посоветовать обновить ядро на более свежее, уповая на то, что оно сможет определить устройство. Хотя процедура компиляции ядра расписана и «разжевана» многими источниками информации (например, здесь), это действие остается достаточно трудоемким, как по времени настройки, так и по времени компиляции. Имеется более простой выход.

За поддержку мультимедиа-устройств в Linux, как то: ТВ-тюнеры, платы DVB или карты видеозахвата, отвечает подсистема video4linux. Свежайшее обновление модулей и V4L можно найти на сайте разработчика: http://linuxtv.org. Там же имеется список поддерживаемых устройств. Если поиск на сайте не увенчался успехом, стоит попробовать сборки других разработчиков. К примеру, очень интересен пакет модулей Игоря Липлянина [Igor M. Liplianin], который можно скачать по адресу: http://liplianin.at.tut.by/. (эти драйвера вошли в версию ядра 2.6.28). Как бы то ни было, скачанные модули следует скомпилировать и установить в своей системе. Но этот шаг – гораздо менее болезненный, чем пересборка всего ядра с нуля.

Собери сам

Для компиляции скачанных модулей понадобятся исходные тексты и заголовочные файлы ядра (kernel headers), утилита make, компиляторы. Установите все это с помощью менеджера пакетов вашего дистрибутива. Порядок сборки драйверов ничем особо не отличается от компиляции иного приложения, за одним только исключением: необходимо предварительно создать правила для make, проще говоря, выбрать нужные модули. Так как порядок установки может несколько различаться в зависимости от разработчика, то советую перед этим прочитать файлы README и INSTALL.

Распакуйте в подходящее место пакет драйверов и перейдите в его корень. В целом алгоритм работы выглядит следующим образом:

  1. выбор необходимых модулей для компиляции;
  2. собственно компиляция;
  3. установка.

Часто можно увидеть предложение сделать символьную ссылку /usr/src/linux, указывающую на каталог с исходными текстами актуального ядра, но мы пойдем другим путем и воспользуемся директивой release для команды make. Сделать это можно в два шага:

$ uname -r # узнаем версию яд ра
$ make release VER=название ядра # передаем скопированное название ядра

Процесс конфигурации состоит в выборе подходящих модулей для последующей компиляции и производится путем ответа на достаточно большое количество вопросов. Существует несколько способов:

  • make config – задается тысяча и один вопрос, на которые нужно ответить «Y» (да), «N» (нет), «M» (модуль). Для вывода справки по текущему пункту можно использовать «?».
  • make menuconfig – в терминале выводится интерактивная оболочка, где все эти вопросы представлены более удобно: в виде системы меню.
  • make xconfig' или 'make gconfig – работа с графическими оболочками.

Особо ленивые или уверенные в том, что необходимые драйвера по умолчанию компилируются безо всей этой волокиты, могут использовать команду make all.

Настает самый важный этап – компиляция. Достаточно ввести в командной строке make, и процесс пойдет. Обычно, в зависимости от выбранных модулей и мощности компьютера, он занимает несколько десятков минут.

Если под конец компиляции не будет сообщений об ошибке, то можно приступить к установке (из-под root):

# make install

Вот и все. Для проверки наличия новых модулей можно перейти в каталог: /lib/modules/номер_ядра/kernel/drivers/media/dvb/. Теперь остается только перезапустить компьютер или подгрузить необходимые драйвера вручную.

Часть 2 По волнам эфира

Спутниковые карты DVB-S, помимо основной своей функции – работы с Интернетом, позволяют принимать теле- и радиопередачи. Завидное цифровое качество и большой выбор транслируемых каналов смотрится гораздо привлекательнее, нежели обычное аналоговое вещание. Грешно не воспользоваться подобной возможностью. Для просмотра спутниковых каналов в Linux чаще всего используются программы Kaffeine, MPlayer, VLC. Начнем с первого номера, а именно, с Kaffeine.

Поставляемая со многими дистрибутивами и ориентированная на KDE, эта программа позволяет слушать музыку, смотреть видеофайлы, DVD и, конечно же, цифровое ТВ. Как правило, после определения платы и появления в каталоге /dev устройства dvb, Kaffeine уже готов работать. После запуска программы, в главном окне должна появиться кнопка Цифровое ТВ.

Процесс настройки очень простой. Выберите в меню DVB пункт Настройка DVB или нажмите сочетание клавиш Ctrl+C. Откроется окно, где можно указать параметры конвертора [LNB settings] и выбрать спутник из имеющихся заготовок. В большинстве случаев в бытовых «тарелках» применяется универсальный конвертор, и по умолчанию Kaffeine настроен именно на него.

LXF118 79 1.jpg Настраиваем каналы в Kaffeine.

Программа поддерживает большое количество спутников «из коробки», но может быть и так, что необходимого вам там нет. Задача добавления нового спутника решается очень просто. Все параметры хранятся в отдельных текстовых файлах, которые могут быть найдены в домашней директории пользователя:

$ ls .kde/share/apps/kaffeine/
atsc       dvb-c       dvbrc icons  wizard_stamp_v0.7.1
channels.dvb dvbdata.tar.gz dvb-s playlists
covers      dvbepg.data dvb-t timers.dvb

Обратите внимание на папку dvb-s: именно она содержит искомые файлы. Создайте в ней новый файл с названием вашего спутника. Осталось только заполнить его содержимое. Для этого можно воспользоваться информацией на сайте http://www.lyngsat.com. Найдите там свой спутник и перепишите данные необходимых каналов. Вам понадобятся такие параметры, как частота, скорость потока, FEC, поляризация (вертикальная или горизонтальная). Заполните файл в соответствие с приведенном примером:

# Express AM 22_53E
# freq            pol sr       fec
S 11044000        V   44950000 3/4
S 10974000        H   8150000  3/4
S 11031000        H   3750000  3/4
S 11096000        V   6400000  3/4
S 11124000        V   7593000  3/4
S 11161000        V   5785000  3/4

Теперь перезапустите программу и выберите свой спутник из списка.

Процесс поиска каналов в Kaffeine чрезвычайно прост. Выберите в меню DVB пункт Поиск каналов. Нажмите кнопку Сканировать в появившемся окне и спокойно идите заниматься своими делами. Через несколько минут программа должна отобразить список обнаруженных каналов в правой части окна. Осталось только выделить их и нажатием кнопки Добавить выбранное перенести в левую рабочую область. Не забудьте подтвердить проделанные изменения при выходе. Просмотр найденных каналов возможен при выборе закладки Цифровое ТВ на левой боковой панели программы. Вот и все, можете наслаждаться результатами своего труда.

Другое кино

Для тех, кто не приемлет Kaffeine в качестве плейера по умолчанию, рассмотрим работу с программами VLC и MPlayer.

LXF118 81 1.jpg Вот так выглядят настройки одного из транспондеров Express AM22.

VLC (Video LAN Client) есть нечто большее, чем просто проигрыватель: он предназначен для трансляции видеопотока через сеть. Но рассмотрение этой возможности выходит за рамки сегодняшнего урока; остановимся исключительно на поддержке DVB.

Все настройки DVB можно найти в специальном окне, если выбрать пункт меню Файл > Открыть устройство. Перейдите на вкладку DVB, а затем заполните поля для указания частоты и скорости потока. Не забудьте, что данные вводятся в килогерцах, в то время как на сайте http://www.lyngsat.com они указаны в мегагерцах. Соответственно, к каждому значению нужно приписать три «лишних» нуля.

После заполнения данных, нажмите клавишу ОK и дайте программе время просканировать транспондер. Настроенный канал или группу каналов, если при этом указывался поставщик, можно найти в меню Навигация.

Для тех, кто предпочитает возиться с тонкими настройками или просто любит использовать MPlayer, рад сообщить, что это замечательное приложение также может успешно работать с DVB, но, в отличие от рассмотренных ранее программ, поиск каналов для него выполняется несколько иначе. Сам MPlayer не умеет сканировать указанные частоты, поэтому приходится использовать специальную утилиту scan. Она входит в пакет dvb-utils, который обычно присутствует во многих дистрибутивах, но при необходимости можно скачать исходники с сайта разработчика http://www.linuxtv.org.

Решение поставленной задачи средствами MPlayer подразумевает выполнение нескольких шагов:

  1. создание файла с настройками частот спутника для утилиты scan;
  2. сканирование и сохранение данных в отдельном файле для программы MPlayer;
  3. собственно настройку MPlayer.

Утилита scan имеет небольшой набор файлов с параметрами некоторых спутников, которые располагаются в каталоге /usr/share/dvb/scan/dvb-s. Как и положено, имена файлов представляют собой названия спутников, но, вполне вероятно, необходимого там не найдется. К счастью, создание подобного файла несложно, и по содержимому он ничем не отличается от уже рассмотренного нами для программы Kaffeine. Для получения необходимых значений опять-таки воспользуйтесь сайтом http://www.lyngsat.com.

После создания файла с настройками своего спутника можно выполнить сканирование каналов:

$ scan /usr/share/dvb/scan/dvb-s/ExpressAM22-53.0E > ~/.mplayer/channels.conf

Здесь мы вызываем утилиту scan с выбранным файлом настроек спутника Express AM22. Все обнаруженные каналы сохраняются в файле channels.conf в скрытой директории .mplayer домашнего каталога текущего пользователя. Обратите внимание, что название этого файла обязательно должно быть именно таким, так как MPlayer по умолчанию ориентируется на него.

Для ознакомления рассмотрим содержимое channels.conf:

1-Muz BY:11043:v:0:44950:35:33:1
World Music Channel:11043:v:0:44950:38:36:2
CTC+2:11043:v:0:44950:41:39:3
CTC+0:11043:v:0:44950:44:42:4
-------------------
RUSSIAN_RADIO:11043:v:0:44950:0:1313:103
HIT_FM:11043:v:0:44950:0:1329:104

В начале каждой строки присутствует название найденного канала телевидения или радио. В дальнейшем именно его придется использовать для управления MPlayer. Последующие числа кодируют частоту, поляризацию, скорость потока, видео- и аудиопиды (pid, параметр фильтрации DVB-платой потока со спутника) и порядковый номер.

Для просмотра найденных каналов можно набрать такую команду:

$ mplayer dvb://

Несколько секунд кэширования, и программа откроет окно с содержимым первого канала из имеющегося списка. Переход с канала на канал осуществляется путем нажатия на клавиши H и K, но имеется возможность запуска MPlayer с открытием канала, отличного от первого. Для этого как раз и пригодятся названия каналов из файла channels.conf, которые находятся в начале каждой строки. Используются они так:

$ mplayer dvb://RUSSIAN_RADIO

Обратите внимание, что некоторые названия каналов имеют в своем составе пробелы, что затрудняет (хотя и не делает невозможным) их набор в командной строке. Поэтому, во избежание лишних проблем, замените пробелы на другой символ; обычно для этих целей используется подчеркивание.

Парочка тонкостей

Наиболее частой проблемой при просмотре цифрового ТВ является рассинхронизация звука и видео, а также наличие артефактов изображения. Если это не результат неточно настроенной тарелки, то можно попытаться исправить положение средствами MPlayer. Посмотрите вывод в терминале – возможно, вы встретите жалобы программы на переполнение буфера: ‘Too many video/audio packets in the buffer’. Тогда можно попробовать воспользоваться декодером libavformat MPEG-TS:

$ mplayer dvb://RUSSIAN_RADIO -demuxer lavf -lavfdopts probesize=256

Кроме этого, одна из возможных причин неполадки – отсутствие пида PCR, который требуется для соблюдения модели буферизации передатчика. Если вы знаете необходимый пид, поместите его в строку канала.

И последние полезные сведения. Все рассмотренные приложения для работы с цифровым ТВ умеют сохранять просматриваемую программу на диск или временно «замораживать» изображение. К примеру, для записи в Kaffeine достаточно нажать соответствующую кнопку на панели инструментов или выбрать пункт меню DVB > Мгновенная запись. Однако для чистого MPlayer, как всегда, придется воспользоваться командной строкой:

$ mplayer -dumpfile ~/video/sts.ts -dumpstream dvb://CTC+0

В этом случае программа запишется без какого-либо перекодирования. Чтобы «поставить» передачу на паузу, используется клавиша Пробел, которая является де-факто стандартом для всех рассмотренных приложений. LXF

Персональные инструменты
купить
подписаться
Яндекс.Метрика