В этой секции описывается, как включить просмотр/захват с V4L-совместимого TV тюнера. См. man страницу, для описания TV опций и кнопок управления.
Во-первых, Вам нужно перекомпилировать MPlayer, ./configure автоматически обнаружит заголовки ядра, относящиеся к v4l, и наличие /dev/video* устройств. Если они существуют, будет собрана поддержка TV (см. вывод ./configure).
Убедитесь, что Ваш тюнер работает с другими TV приложениями под Linux, например XawTV.
Полный список опций доступен на страницах руководства (man). Вот всего несколько советов:
Используйте опцию channels. Пример:
-tv channels=26-MTV1,23-TV2Объяснение: при использовании такой опции, будут использоваться только каналы 26 и 23, и, кроме того, будет приятный OSD текст при переключении между каналами, отображающий название канала. Пробелы в названиях каналов должны быть заменены символом "_".
Выберите разумные размеры изображения. Размеры изображения полученного изображения должны делиться на 16.
Если Вы захватываете видео с вертикальным разрешением выше половины полного разрешения (т.е. 288 для PAL или 240 для NTSC), убедитесь, что Вы включили деинтерлейсинг[deinterlacing]. Иначе Вы получите фильм с сильными искажениями в сценах с быстрыми движениями, и контроль битпотока, скорее всего, будет даже не в состоянии поддерживать необходимый уровень битпотока, поскольку артефакты от интерлейсинга[interlace] создают огромное количество мелких деталей и поэтому отнимают большую часть трансфера[bandwidth]. Вы можете включить деинтерлейсер, используя -vf pp=DEINT_TYPE. Обычно pp=lb работает хорошо, но это уже субъективное мнение. Другие алгоритмы деинтерлейсинга см. на man-странице и попробуйте их.
Обрежьте пустое пространство. Когда вы захватываете видео, часто, зоны по краям черны или содержат просто шум. Это опять съедает часть трансфера[bandwidth]. Точнее, это не сами чёрные зоны, а контрастный переход от чёрного к более светлому видео, но это сейчас не важно. Прежде чем Вы начнёте захватывать, подстройте аргументы опции crop, чтобы обрезать весь мусор по краям. Снова, не забудьте сохранить получившиеся размеры изображения допустимыми.
Отслеживайте загрузку CPU. Она не должна пересекать 90% границу большую часть времени. Если у Вас большой размер буфера захвата, MEncoder переживёт такую загрузку в течение нескольких секунд, но не более того. Лучше отключить 3D OpenGL хранители экрана и другую подобную гадость.
Не меняйте системные часы. MEncoder использует системные часы для A/V синхронизации. Если Вы переведёте системные часы (особенно назад), MEncoder запутается, и Вы начнёте терять кадры. Это особенно важный вопрос, если Вы подключены к сети и используете какие-нибудь программы синхронизации времени, в духе NTP. Вы должны отключить NTP во время захвата, если Вы действительно хотите сделать хорошую запись.
Изменяйте значение outfmt только если Вы знаете, что Вы делаете,или Ваши карта/драйвер не поддерживают значение по умолчанию ( пространство цветов YV12). В старых версиях MPlayer/ MEncoder было необходимо выставлять нужное значение формата вывода. Эта проблема должен быть решена в текущих версиях и опция outfmt больше не требуется, поскольку значение по умолчанию подходит в большинстве случаев. Например если Вы будете захватывать в DivX, используя libavcodec и укажете outfmt=RGB24 для улучшения качества полученного изображения, то Вы увидите, что в действительности, изображение все равно будет перекодировано в YV12, поэтому все что Вы получите, это огромная загрузка CPU.
Чтобы использовать пространство цветов I420 (outfmt=i420), Вы должны указать опцию -vc rawi420 в связи с конфликтом 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://Также возможно указать меньшие размеры изображения в опции -tv и пропустить программное масштабирование, но приведённый подход использует максимальное доступное количество информации и чуть более устойчив к шуму. Чипы bt8x8 из-за аппаратных ограничений могут усреднять пиксели только по горизонтали.