![]() |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Поделиться |
![]()
Сообщение
#1
|
|
Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Включил два ноутбука с дисплеями разных пропорций и достал костыллятор:
Всё что ниже, потенциально предназначено для консольных дистрибутивов повседневного пользовательского уровня с уровнем пользователя от среднего и ниже. А также поиск путей упрощения запуска медиаконтента в консоли. С доведением консольных систем до повседневного использования. Первый скрипт: Воспроизводит все видеофайлы с любыми пропорциями на дисплеях с любыми пропорциями. Формат запуска: Код $ mplayer-vc /путь/к/видеофайлу На дух не переносит пробелов в пути: $@ отдельные куски полного пути разделённые пробелами воспринимает как отдельные параметры и режет бэкслэши. Как справиться с этим не знаю. Листинг скрипта: Код $ cat ~/mplayer-vc #!/bin/bash VIDEOFILE=$(echo "$@") # Разрешение оригинального видеофайла по X VIDEOWIDTH=`mediainfo $VIDEOFILE | grep 'Width' | awk '{printf $3}'` # Разрешение оригинального видеофайла по Y VIDEOHEIGHT=`mediainfo $VIDEOFILE | grep 'Height' | awk '{printf $3}'` # Пропорции изоражения видео в десятичном виде ASPECTMP=`mediainfo $VIDEOFILE | grep 'Display aspect ratio' | rev | awk '{printf $1}' | rev | sed 's/:/\//'` VIDEOASPECT=`echo $ASPECTMP | bc -l | sed 's/^\(......\).*/\1/'` # Пропорции фреймбуфера в десятичном виде FBASPECT=`fbset --test | grep mode | awk -F '"' '{print $2}' | sed 's/x/\//' | bc -l |sed 's/^\(......\).*/\1/'` # Разрешение фреймбуфера по Y в пикселах FBHEIGHT=`fbset --test | grep mode | awk -F '"' '{print $2}' | awk -F 'x' '{printf $2}'` # Если видеофайл с пропорциями 4x3 воспроизводится в widescreen мониторе, то # вычислить коэффициент масштабирования до Y фреймбуфера # и далее использовать этот коэффициент # для получения предела промасштабирования видео по X if [ "$VIDEOASPECT" == 1.3333 -a "$FBASPECT" > 1.3333 ]; then VSIZEXXX=`echo "$FBHEIGHT/$VIDEOHEIGHT" | bc -l` XVSIZE=`echo "$VIDEOWIDTH*$VSIZEXXX" | bc -l` # иначе вычислить X фреймбуфера else XVSIZE=`fbset --test|grep geometry|awk '{print $2}'` fi # пропорционально масштабировать по коэффициенту # до X фреймбуфера, - в переменной XVSIZE setterm --blank 0; mplayer -nocache -softvol -xy $XVSIZE -fs -zoom $VIDEOFILE &>/dev/null XVSIZE (переменная): X - координата V - видео, видеофайл SIZE - размер собственно XVSIZE - размер видео в пикселах в полный экран по координате X Другой вариант этой мысли упрощения просмотра видеофайлов в консоли: Это использовать алиас Код $ ls -l /etc/bashrc.d/mplayer.sh -rwxr-xr-x 1 root root 110 янв 11 18:43 /etc/bashrc.d/mplayer.sh Код $ cat /etc/bashrc.d/mplayer.sh alias mplayer-vofbdev="setterm --blank 0; mplayer -nocache -softvol -xy $(fbset --test|grep geometry|awk '{print $2}') -fs -zoom &>/dev/null" Формат запуска для просмотра видео в консоли Код $ mplayer-vofbdev /путь/к\ какому\ то\ видео\ файлу Достоинства: Промасштабирует видео в плюс или минус до разрешения фреймбуфера. Обрабатывает пробелы в пути. Недостаток: На дух не переваривает воспроизведение видео с пропорциями 4x3 в widescreen мониторе. Суть проблемы: -xy N масштабирует по X до размера фреймбуфера по X и если видео по Y выходит за пределы координаты, mplayer откажется отображать видео. При просмотре видеофайла с пропорцией 4x3 на widescreen мониторе, сначала требуется масштабировать по Y и пропорционально масштабировать по X. Предварительно запросив разрешение и пропорции видеофайла. Такие вот невесёлые пирожки с котятами... Сообщение отредактировал speccyfighter - 12.1.2018, 11:50 |
|
|
![]() |
![]()
Сообщение
#2
|
|
Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
В лайве IceArch-0.988 у меня всё намного хуже чем у вас
![]() В этом скрипте http://forum.russ2.com/index.php?showtopic...ost&p=51532 звук не пропадает и всё время не пропадал, но: Не могу выйти из цикла проигрывания нескольких видео при запуске из Х-терминала командой './mplayer-vc-test-N035 ./*'. По первому q, mplayer завершает проигрывание видеофайла. По второму q никакой реакции на выход из скрпта. Убил 12 часов и заметил такую штуку: - В sakura выход из скрипта по q невозможен в принципе. Никак. - В QTerminal выход по второму q из скрипта тоже невозможен, но: В Qterminal, даже если окно терминала единственное на столе, в паузе между видео оно неактивное (чего не может быть, но оно есть) и это видно по курсору, - он не залит, а контуром. И чтобы сработало второе q, нужно курсором мыха клацнуть по окну терминала. После этого клаца, курсор qterminal станет залитым (окно терминала станет активным) и второе q завершит работу скрипта. Что характерно, в tty двойной q срабатывает для выхода из скрипта, - что естественно, - в tty же нет окон и нечему становиться неактивным. Но вообще-то, единственное окно на рабочем столе всегда должно быть активным. И неактивным, оно как бы и не может стать, второго-то окна нет. Но эта неактивность единственного окна на Рабочем столе есть. И она мешает выходу по второму q., не давая выйти из цикла. Хотел поставить xterm, чтобы посмотреть, зависит ли это от самого терминала или это зависит от icewm который оставляет единственное окно на столе неактивным (!!!), и тут же нарвался на косячный пакет с косячной библиотекой которая попала в IceArch-0.988: Код root<>archiso:~/# pacman -Sy :: Обновление баз данных пакетов... core не устарел extra не устарел ошибка: не удалось получить файл 'community.db' из mirror.yandex.ru : Failed writing body (2957 != 12582) 0% ошибка: не удалось получить файл 'community.db' из mirror.yandex.ru : Failed writing body (0 != 16125)-] 0% ошибка: не удалось получить файл 'community.db' из archlinux.zepto.cloud : Failed writing body (0 != 14140)0% ошибка: не удалось получить файл 'community.db' из mirror.ps.kz : Failed writing body (2948 != 4320)---] 0% ошибка: не удалось получить файл 'community.db' из mirror.ps.kz : Failed writing body (0 != 16120)-----] 0% ошибка: не удалось получить файл 'community.db' из ftp.byfly.by : Failed writing body (2909 != 12960)--] 0% ошибка: не удалось получить файл 'community.db' из mirror.datacenter.by : Failed writing body (2909 != 4320)% ошибка: не удалось получить файл 'community.db' из archlinux.ip-connect.vn.ua : Failed writing body (2909 != 5760) ошибка: не удалось получить файл 'community.db' из archlinux.ip-connect.vn.ua : Failed writing body (0 != 16366) ошибка: не удалось получить файл 'community.db' из mirrors.nix.org.ua : Failed writing body (0 != 5489)] 0% ошибка: не удалось получить файл 'community.db' из mirrors.nix.org.ua : Failed writing body (0 != 16366) 0% ошибка: не удалось получить файл 'community.db' из mirrors.n-ix.net : Failed writing body (1462 != 11520) 0% ошибка: не удалось получить файл 'community.db' из mirrors.n-ix.net : Failed writing body (0 != 16166)-] 0% ошибка: не удалось получить файл 'community.db' из mirrors.evowise.com : Failed writing body (3219 != 11616)% ошибка: не удалось получить файл 'community.db' из mirror.rackspace.com : Failed writing body (3030 != 8208)% ошибка: не удалось обновить community (ошибка в библиотеке загрузки) ошибка: не удалось получить файл 'archlinuxcn.db' из cdn.repo.archlinuxcn.org : Failed writing body (0 != 16085) ошибка: не удалось обновить archlinuxcn (ошибка в библиотеке загрузки) ошибка: failed to synchronize all databases root<>archiso:~/# Вот она эта засада: ошибка: не удалось получить файл 'archlinuxcn.db' из cdn.repo.archlinuxcn.org : Failed writing body (0 != 16085) ошибка: не удалось обновить archlinuxcn (ошибка в библиотеке загрузки) ошибка: failed to synchronize all databases Даже контрольную проверил, - не придраться: Код root<>archiso:/path/# du -b ./IceArch-0.988-x86_64.iso 1552662528 ./IceArch-0.988-x86_64.iso root<>archiso:/path/# root<>archiso:/path/# head -c 1552662528 ./IceArch-0.988-x86_64.iso | md5sum 7576a7cf4a4127d7c3579b0b3f33032c - root<>archiso:/path/# head -c 1552662528 /dev/sdb | md5sum 7576a7cf4a4127d7c3579b0b3f33032c - Т.е. судя по всему, в репозиторий попала сломанная библиотека. И на эту неудачу в этот момент с ней был собран IceArch-0.988, в котором из-за этой библиотеки в арче и сломано было обновление баз и установка пакетов. И что-то мне припоминается, что в IceArch-0.985 и с библиотекой и с обновлением баз было хорошо. У меня в консоли все нормально, звук есть , а в X-сах он действительно пропал ( вчера не заметил ) Но будем оптимистами ![]() Приглашения логина в лайве IceArch нет, а сразу рутом. Поэтому делаю в qterminal: # useradd tester # passwd tester # gpassw -a tester video # gpassw -a tester audio # su - tester $ export DISPLAY=:0 $ /usr/bin/pulseaudio --daemonaze=no & # при этом он матюгнулся на dbus для сессии Проигрываю от пользователя, то да сё... И в какой-то момент гадский пульс рушится, а плееру поплохело от этого и он сваливается в alsa. А поскольку у меня по-дефолту без переиндексации, аудиокарта сидит не в сокет 0, звука ни хрена. Пока не указал карту явно, из-за упавшей пульсы, прямой командой с параметром указывающим на реальную звуковую: -ao alsa:device=hw=1 У меня в консоли все нормально, звук есть , а в X-сах он действительно пропал alsa так не умеет ![]() Она через dmix или везде работает или везде не работает. И по большому счёту, алсе по-минимуму достаточно ядерного драйвера и библиотеки libalsa для вывода звука. Лишь бы звуковая карта сидела в сокете 0. И вот из-за этой засады Код root<>archiso:~/# sed "" /proc/asound/cards 0 [HDMI ]: HDA-Intel - HDA Intel HDMI HDA Intel HDMI at 0xc1210000 irq 52 1 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xc1214000 irq 49 звуковые, для вывода звука через алса, надо рассадить по правильным сокетам, чтобы плеер не тошнило если пульса упала Код root<>archiso:~/# tail -n 2 /где/то/там/etc/modprobe.d/alsa-modindex.conf options snd_hda_intel id=PCH index=0 options snd_hda_intel id=HDMI index=2 Но наблюдал и пульсовое ПО, которому становится плохо, если звуковая сидит не в том сокете в котором должна. И это уже косяк ядерного драйвера, который никто уже не будет чинить. Про это весь интернет знает, но всем на этот косяк ядра пофигу. А те кто знает про этот косяк, переиндексируют карты руками через конфиг. Его и заготовки в IceArch кстати нет. И если скажем IceArch перевести на alsa, то звук у меня даже хрен заведётся. ![]() Я приблизительно помню конфиг переиндексации на память, но ломать так мозг мне лень. Приблизительно в ту же тему: Народ говорит про УМВР с пульсой... Ага... У него контролов чуть больше 20-ти. А у меня на чипе AD1988, у которого больше 40-ка контролов, пульсу просто тошнило. И иногда она скрежетала как несмазанная телега. И часто рушилась. Поэтому лет несколько назад я с пульсой окончательно попрощался. Год-полтора подряд пытался проникнуться ею, но из этого у меня ничего не вышло. Конечно, сейчас всё ПО прибито и усиленно прибивается к пульсе. И это может на чём-то аукнуться. Но тут мне приходится выбирать в линукс-системах, между плохо и ещё хуже. Сообщение отредактировал speccyfighter - 30.11.2019, 9:33 |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 3.8.2025, 0:46 |