Блог gentoo

Регистрация

gentoo

some abt gentoo

<<< Intel HD Audio. Включаем звук.
Bluetooth, gprs>>>

Mplayer. Смотрим фильмы в консоли.

Имея настроенный фреймбуфер и звук почему бы не попробовать посмотреть какой-нибудь фильм в консоли? В качестве плеера будет использоваться конечно же mplayer. Х'сы не стоят, фактически ничего ещё не устанавливалось.

Используемые USE-флаги (кроме некоторых других менее значительных):
fbcon - для вывода изображения через фреймбуфер.
xvid - не уверен был нужен он или нет, но решил включить.
svga - для тех, кто хочет попробовать выводить изображение через svgalib.
Не включайте флаг truetype! Два часа бился, не мог понять почему у меня mplayer падает с ошибкой 11, не успевая ничего воспроизвести.

Если каких-то кодеков не будет хватать, mplayer сообщит об этом. К примеру на одном из фильмов он мне выдал следующее:
"Запрошенное семейство аудиокодеков [a52] (afm=liba52) недоступно.
Включите его во время компиляции."

Собирается mplayer быстро. Собираем:
# emerge mplayer

Список доступных драйверов вывода видео:
$ mplayer -vo help

Воспроизведение фильма:
$ mplayer -vo fbdev2 -zoom -x 1024 -y 668 -fs /home/share/Video/xxx.avi
где:
vo - может быть fbdev или fbdev2 (для вывода через фреймбуфер). Необязательный параметр.
zoom - необходим для растягивания картинки, иначе получается прямоугольник с размерами avi-шки.
x - число - масштабировать по горизонтали до этого числа.
y - то же самое по вертикали.
(владельцы обычных неширокоформатных мониторов могут просто прописать один ключ "-xy 1024" (либо 1280, смотря какой размер фреймбуфера задан) и изображение, смаштабировавшись по горизонтали до 1024, автоматически смаштабируется по вертикали, сохраняя пропорции. Можно, также, вместо "-zoom -xy 1024 -fs" попробовать использовать просто "-vf scale=1024:768")
fs - Full Screen. Отцентрирует изображение на экране. Необязательный параметр.

Смысл задания отдельно ключей -x и -y в том, что экран у меня широкоформатный (1280х800), а разрешение фреймбуфера 1024x768, которое по некоторым причинам не удаётся выставить в 1280х800. И фактически 1024 растягиваются на физические 1280, а 768 на 800. Ключ -monitoraspect 16:10 с -zoom не работает (да и такое впечатление, что вообще в fbdev не работает, потому что и 4:3 никакого эффекта не даёт), да и непонятно как бы он отрабатывал при такой чехарде с разрешениями. Вобщем, из-за всего этого фильмы воспроизводятся приплюснутыми.
Как вычислять значение ключа -y сообразите, кому это нужно, сами ;) Для каждого фильма оно будет своё. Консольный калькулятор - bc.

О впечатлениях: качество картинки оказалось очень даже ничего, я ожидал худшего. Даже более того, сравнивая с изображением в иксах я не заметил разницы, присматривался к цветопередаче и детализации теней - картинка мне показалась такой же. Так что, запустить на другой консоли что-нибудь компилировываться и спокойно сидеть смотреть фильм очень даже можно. Навигация - стрелками курсора, Q - выход, остальные кнопки в мане.

Вывод изображения через svgalib у меня не получился - ошибка инициализации видеодрайвера. Ковыряться не стал, самого факта воспроизведения фильмов без X'сов я уже добился ;) Единственное, при сборке svgalib-1.9.25 наткнулся на баг - не собирается с ядром 2.6.23. Решение по сборке нашёл в багзилле здесь (смотрим патч).

Подправлял исходники так:
# ebuild /usr/portage/media-libs/svgalib/svgalib-1.9.25.ebuild unpack
либо
# nano /var/tmp/portage/media-libs/svgalib-1.9.25/work/svgalib-1.9.25/kernel/svgalib_helper/kernel26compat.h
либо используем утилиту patch.
# ebuild /usr/portage/media-libs/svgalib/svgalib-1.9.25.ebuild merge

Теги: framebuffer|bugs


  • Анонимно
    27 февраля 2008|04:11|ссылка
    Честно говоря, не очень понял как подбирается Y.
    Вот например, фильм размером 1280x720 (аспект 16:9).
    Монитор широкоформатный (16:10), а разрешение по фреймбуфере 1024х768 (4:3).
    Хотим, чтобы фильм так и оставался в пропорции 16:9 и по горизонтали был размером 1024 - считаем:
    1024 / 16 * 9 = 576.
    Результат неправильный - слишком сжат по вертикали. У вас там стоит 668, выглядит нормально, но из эксперимента (приложение линейки к монику) я получил 690.

  • Анонимно
    27 февраля 2008|04:19|ссылка
    Написал комментарий, сразу понял в чём дело.
    Итак, 1024x768 растягивается на 1680x1050
    x = 1024 (реальное 1680)
    y = ? (реальное 1680/10*9 = 945)

    по пропорции: ? / 945 = 768 / 1050
    ? = 691 - то что надо ;)

    • gentoo
      27 февраля 2008|04:30|ссылка
      Да, там "y" у разных фильмов разное. Сам недавно хотел посмотреть в консоли фильм и забыл как считать :D

  • record
    10 июня 2008|23:34|ссылка
    >Не включайте флаг truetype!

    спасибо огромное :-)