TV вход
В этой секции описывается, как включить просмотр/захват
с V4L-совместимого TV тюнера. См. man страницу, для описания TV опций
и кнопок управления.
Компиляция
Во-первых, Вам нужно перекомпилировать MPlayer,
./configure автоматически обнаружит заголовки ядра,
относящиеся к v4l, и наличие /dev/video* устройств.
Если они существуют, будет собрана поддержка TV (см. вывод
./configure).
Убедитесь, что Ваш тюнер работает с другими TV приложениями под Linux,
например XawTV.
Советы по использованию
Полный список опций доступен на страницах руководства (man).
Вот всего несколько советов:
Используйте опцию . Пример:
-tv channels=26-MTV1,23-TV2
Объяснение: при использовании такой опции, будут использоваться только каналы 26
и 23, и, кроме того, будет приятный OSD текст при переключении между каналами,
отображающий название канала. Пробелы в названиях каналов должны быть заменены
символом "_".
Выберите разумные размеры изображения. Размеры изображения полученного
изображения должны делиться на 16.
Если Вы захватываете видео с вертикальным разрешением выше половины полного
разрешения (т.е. 288 для PAL или 240 для NTSC), убедитесь, что Вы включили
деинтерлейсинг[deinterlacing]. Иначе Вы получите фильм с сильными искажениями в
сценах с быстрыми движениями, и контроль битпотока, скорее всего, будет даже не
в состоянии поддерживать необходимый уровень битпотока, поскольку артефакты
от интерлейсинга[interlace] создают огромное количество мелких деталей и поэтому
отнимают большую часть трансфера[bandwidth]. Вы можете включить деинтерлейсер,
используя . Обычно
работает хорошо, но это уже субъективное мнение. Другие алгоритмы
деинтерлейсинга см. на man-странице и попробуйте их.
Обрежьте пустое пространство. Когда вы захватываете видео, часто, зоны по краям
черны или содержат просто шум. Это опять съедает часть трансфера[bandwidth].
Точнее, это не сами чёрные зоны, а контрастный переход от чёрного к более
светлому видео, но это сейчас не важно. Прежде чем Вы начнёте захватывать,
подстройте аргументы опции , чтобы обрезать весь мусор по
краям. Снова, не забудьте сохранить получившиеся размеры изображения
допустимыми.
Отслеживайте загрузку CPU. Она не должна пересекать 90% границу большую часть
времени. Если у Вас большой размер буфера захвата,
MEncoder переживёт такую
загрузку в течение нескольких секунд, но не более того. Лучше отключить 3D
OpenGL хранители экрана и другую подобную гадость.
Не меняйте системные часы. MEncoder использует
системные часы для A/V синхронизации. Если Вы переведёте системные часы
(особенно назад), MEncoder запутается,
и Вы начнёте терять кадры. Это особенно
важный вопрос, если Вы подключены к сети и используете какие-нибудь программы
синхронизации времени, в духе NTP. Вы должны отключить NTP во время захвата,
если Вы действительно хотите сделать хорошую запись.
Изменяйте значение только если Вы знаете, что Вы
делаете,или Ваши карта/драйвер не поддерживают значение по умолчанию (
пространство цветов YV12). В старых версиях MPlayer/
MEncoder было необходимо выставлять нужное значение
формата вывода.
Эта проблема должен быть решена в текущих версиях и опция больше не требуется, поскольку значение по умолчанию подходит в
большинстве случаев. Например если Вы будете захватывать в DivX, используя
libavcodec и укажете
для улучшения качества
полученного изображения, то Вы увидите, что в действительности, изображение все
равно будет перекодировано в YV12, поэтому все что Вы получите, это огромная
загрузка CPU.
Чтобы использовать пространство цветов I420 (), Вы
должны указать опцию в связи с конфликтом fourcc с
видео кодеком Intel Indeo.
Есть несколько путей захвата аудио. Вы можете получить звук, либо используя Вашу
звуковую карту и внешний кабель, соединяющий видео карту и линейный вход[line-in],
либо используя встроенный ADC на в чипе bt878. В этом случае, Вы должны
загрузить драйвер btaudio. Читайте файл
linux/Documentation/sound/btaudio (в дереве ядра, не
MPlayer'а) с некоторыми инструкциями по использованию этого драйвера.
Если MEncoder не может открыть аудио устройство,
убедитесь, что оно действительно доступно. Возможны какие-нибудь трудности со
звуковыми серверами, например arts (KDE) и esd (GNOME). Если у Вас
полнодуплексная звуковая карта (почти все современные карты это поддерживают),
и Вы используете KDE, попробуйте отметить галочку "full duplex" в меню настроек
звукового сервера.
Примеры
Фиктивный вывод, AAlib :)
mplayer -tv driver=dummy:width=640:height=480 -vo aatv://
Ввод со стандартного V4L:
mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://
Более естественный пример. Это заставляет MEncoder захватывать полное PAL
изображение, обрезать края и деинтерлейсить картинку, используя алгоритм
линейного смешивания. Аудио сжимается до постоянного битпотока 64 кБ/с,
используя LAME кодек. Эти установки подходят для захвата фильмов.
mencoder -tv driver=v4l:width=768:height=576 \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
-oac mp3lame -lameopts cbr:br=64 \
-vf crop=720:544:24:16,pp=lb -o output.avi tv://
Здесь, изображение будет дополнительно масштабировано до 384x288 и сжато с
битпотоком 350 кБ/с в режиме высокого качества. Опция vqmax даёт волю
квантайзеру[quantizer] и позволяет компрессору видео действительно достичь столь
низкого битпотока, правда ценой качества. Это может быть полезно для захвата
длинных TV серий, где качество не особенно важно.
mencoder -tv driver=v4l:width=768:height=576 \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
-oac mp3lame -lameopts cbr:br=48 \
-vf crop=720:540:24:18,pp=tn/lb,scale=384:288 -sws 1 -o output.avi tv://
Также возможно указать меньшие размеры изображения в опции
и пропустить программное масштабирование, но приведённый подход использует
максимальное доступное количество информации и чуть более устойчив к шуму.
Чипы bt8x8 из-за аппаратных ограничений могут усреднять пиксели только по
горизонтали.