Приветствую, форумчане!
Хотелось бы иметь возможность смотреть фильмы из консоли. Framebuffer есть, разрешение консоли (как и иксов) 1280x800, текстовое разрешение 160x50 ($COLUMNS и $LINES), карточка nvidia C67, графический драйвер nouveau, но mplayer работает только с драйвером -vo caca (псевдографика). Когда я запускаю
mplayer -vo directfb --screenw=1280 --screenh=800 --bpp=16 фильм
видео я не вижу, только звук (независимо от того, какое разрешение и bpp выставляю и выставляю ли вообще).
Сначала команда
mplayer -vo directfb фильм
запускала фильм в каком-то непонятном разрешении (в нижней части экрана, смотреть это убожество было можно, но безо всякого удовольствия).
После вставки в файл /etc/fb.modes следующих строк:
mode "1280x800"
geometry 1280 800 1280 800 16
# timings 0 0 0 0 0 0 0
timings 11976 200 72 22 3 128 6
accel true
rgba 5/11,6/5,5/0,0/0
endmode
а в /etc/directfbrc следующих:
mode=1280x800
depth=16
mplayer отображает только чёрный экран, хотя разрешение в консоли выставляется правильное. Звук есть. Кроме того, и до, и после правок конфигов, с драйвером directfb нажатие любой клавиши в mplayer приводит к остановке его работы (в режиме caca, как и в окне иксов, управляющие клавиши работают нормально).
Mode я узнал командой fbset -s, timings - командой cvt 1280 800 60, после чего преобразовал выданные значения в тайминги по алгоритму, предложенному в статье https://www.opennet.ru/base/X/framebuffer_setup.txt.html (приложение 2, в самом конце статьи). Пробовал также оставлять все 0, - ничего не изменилось.
Ниже привожу стандартный вывод mplayer в консоли через directfb:
MPlayer2 2.0-728-g2c378c7-4+b1 (C) 2000-2012 MPlayer Team
Cannot open file '/home/roma/.mplayer/input.conf': No such file or directory
Failed to open /home/roma/.mplayer/input.conf.
Cannot open file '/etc/mplayer/input.conf': No such file or directory
Failed to open /etc/mplayer/input.conf.
Playing /media/roma/Seagate Expansion Drive/Amarkord.1973.TRIPLE.BDRip.XviD.AC3.-HQCLUB.avi.
Detected file format: AVI (Audio Video Interleaved) (libavformat)
[lavf] stream 0: video (mpeg4), -vid 0
[lavf] stream 1: audio (ac3), -aid 0
[lavf] stream 2: audio (ac3), -aid 1
[lavf] stream 3: audio (ac3), -aid 2
Clip info:
encoder: VirtualDubMod 1.5.10.2 (build 2542/release)
title: Амаркорд / Amarсord (1973) BDRip
artist: Flynn82
copyright: http://hqclub.net/
genre: Drama/Comedy
comment: R.G. HQCLUB
Load subtitles in /media/roma/Seagate Expansion Drive/
Opening video filter: [scale]
[ass] auto-open
Selected video codec: MPEG-4 part 2 [libavcodec]
Selected audio codec: ATSC A/52A (AC-3) [libavcodec]
AUDIO: 48000 Hz, 2 ch, floatle, 192.0 kbit/6.25% (ratio: 24000->384000)
AO: [pulse] 48000Hz 2ch floatle (4 bytes per sample)
Starting playback...
VIDEO: 704x384 23.976 fps 0.0 kbps ( 0.0 kB/s)
[swscaler @ 0x7fc30cff3640]using unscaled yuv420p -> bgra special converter
VO: [directfb] 704x384 => 704x384 BGRA
No bind found for key 'п€Ѓ'.
[Строчка "No bind..." повторяется много раз]
MPlayer interrupted by signal 6 in module: unknown
- MPlayer crashed. This shouldn't happen.
It can be a bug in the MPlayer code _or_ in your drivers _or_ in your
gcc version. If you think it's MPlayer's fault, please read
DOCS/HTML/en/bugreports.html and follow the instructions there. We can't and
won't help unless you provide this information when reporting a possible bug.
А вот стандартный вывод ошибок (stderr) mplayer в консоли:
commandline read: mplayer
commandline read: -vo
commandline read: directfb
commandline read: --screenw=1280
commandline read: --screenh=800
commandline read: --bpp=16
commandline read: /media/roma/Seagate Expansion Drive/Amarkord.1973.TRIPLE.BDRip.XviD.AC3.-HQCLUB.avi
~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.10 |~~~~~~~~~~~~~~~~~~~~~~~~~~
(c) 2001-2008 The world wide DirectFB Open Source Community
(c) 2000-2004 Convergence (integrated media) GmbH
----------------------------------------------------------------
(*) DirectFB/Core: Single Application Core. (2014-10-21 10:15)
(*) Direct/Memcpy: Using Generic 64bit memcpy()
(*) Direct/Thread: Started 'VT Switcher' (-1) [CRITICAL OTHER/OTHER 0/0] <8388608>...
(*) Direct/Thread: Started 'Keyboard Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: Keyboard 0.9 (directfb.org)
(*) DirectFB/Genefx: MMX detected and enabled
(*) DirectFB/Graphics: MMX Software Rasterizer 0.6 (directfb.org)
(*) DirectFB/Core/WM: Default 0.3 (directfb.org)
(*) FBDev/Surface: Allocated 1280x800 16 bit RGB16 buffer (index 0) at offset 0 and pitch 2560.
(!!!) *** WARNING [letting unprivileged IDirectFBDisplayLayer::GetSurface() call pass until cooperative level handling is finished] *** [../../../src/display/idirectfbdisplaylayer.c:174 in IDirectFBDisplayLayer_GetSurface()]
(*) FBDev/Mode: Setting 1280x800 LUT8
(*) FBDev/Mode: Switched to 1280x800 (virtual 1280x800) at 8 bit (LUT8), pitch 2560
(*) FBDev/Surface: Allocated 1280x800 8 bit LUT8 buffer (index 0) at offset 0 and pitch 2560.
(*) FBDev/Mode: Setting 1280x800 RGB32
(*) FBDev/Mode: Switched to 1280x800 (virtual 1280x800) at 32 bit (RGB32), pitch 2560
(*) FBDev/Surface: Allocated 1280x800 32 bit RGB32 buffer (index 0) at offset 0 and pitch 2560.
(*) FBDev/Surface: Allocated 1280x800 32 bit RGB32 buffer (index 0) at offset 0 and pitch 2560.
(*) FBDev/Mode: Setting 1280x800 RGB32
(*) FBDev/Mode: Switched to 1280x800 (virtual 1280x1600) at 32 bit (RGB32), pitch 2560
(!!!) *** WARNING [unable to adjust heap offset] *** [../../../systems/fbdev/surfacemanager.c:167 in dfb_surfacemanager_adjust_heap_offset()]
(*) FBDev/Surface: Allocated 1280x800 32 bit RGB32 buffer (index 1) at offset 2048000 and pitch 2560.
(!) DirectFB/FBDev: Panning display failed (x=0 y=800 ywrap=0 vbl=0)!
--> Invalid argument
(!) DirectFB/FBDev: Panning display failed (x=0 y=800 ywrap=0 vbl=0)!
--> Invalid argument
A: 0.0 V: 0.0 A-V: 0.000 ct: 0.000 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.0 V: 0.0 A-V: 0.001 ct: 0.000 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.1 V: 0.1 A-V: 0.001 ct: 0.000 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.1 V: 0.1 A-V: 0.001 ct: 0.000 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.2 V: 0.2 A-V: 0.004 ct: 0.000 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.2 V: 0.2 A-V: 0.002 ct: 0.000 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.3 V: 0.3 A-V: 0.002 ct: 0.001 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.3 V: 0.3 A-V: 0.001 ct: 0.001 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.3 V: 0.3 A-V: 0.003 ct: 0.001 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.4 V: 0.4 A-V: 0.001 ct: 0.001 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.4 V: 0.4 A-V: 0.001 ct: 0.001 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.5 V: 0.5 A-V: 0.001 ct: 0.001 0/ 0 ??% ??% ??,?% 0 0 [K
A: 0.5 V: 0.5 A-V: 0.003 ct: 0.001 0/ 0 2% 13% 1.4% 0 0 [K
A: 0.5 V: 0.5 A-V: 0.000 ct: 0.001 0/ 0 2% 13% 1.5% 0 0 [K
A: 0.6 V: 0.6 A-V: 0.001 ct: 0.001 0/ 0 2% 13% 1.4% 0 0 [K
A: 0.6 V: 0.6 A-V: 0.000 ct: 0.002 0/ 0 2% 13% 1.3% 0 0 [K
A: 0.7 V: 0.7 A-V: 0.002 ct: 0.002 0/ 0 1% 13% 1.2% 0 0 [K
A: 0.7 V: 0.7 A-V: 0.000 ct: 0.002 0/ 0 1% 14% 1.4% 0 0 [K
[Дальше много подобных строк, которые отсюда вырезал, чтоб не захламлять пост]
(!) [ 1464: 0.000] --> Caught signal 11 (sent by the kernel) <--
(!!!) *** WARNING [still objects in 'Layer Region Pool'] *** [../../../lib/fusion/object.c:241 in fusion_object_pool_destroy()]
(!!!) *** WARNING [still objects in 'Layer Context Pool'] *** [../../../lib/fusion/object.c:241 in fusion_object_pool_destroy()]
(!!!) *** WARNING [still objects in 'Surface Pool'] *** [../../../lib/fusion/object.c:241 in fusion_object_pool_destroy()]
Сигналы, прерывающие mplayer, принимаются по нажатию любой управляющей клавиши, например стрелки вперёд или *.