| Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
| Поделиться |
11.1.2018, 20:10
Сообщение
#1
|
|
|
Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1
|
Включил два ноутбука с дисплеями разных пропорций и достал костыллятор:
Всё что ниже, потенциально предназначено для консольных дистрибутивов повседневного пользовательского уровня с уровнем пользователя от среднего и ниже. А также поиск путей упрощения запуска медиаконтента в консоли. С доведением консольных систем до повседневного использования. Первый скрипт: Воспроизводит все видеофайлы с любыми пропорциями на дисплеях с любыми пропорциями. Формат запуска: Код $ 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 |
|
|
|
![]() |
6.11.2019, 22:42
Сообщение
#2
|
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: 20
|
Юра, вот vo из mplayer-а играющего из под qterminal :
VO: [xv] 320x240 => 320x240 Planar YV12 не удивляйся разрешению , снимал давно фотиком. Сообщение отредактировал kostyalamer - 6.11.2019, 22:44 |
|
|
|
7.11.2019, 0:01
Сообщение
#3
|
|
|
Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: 1
|
Юра, вот vo из mplayer-а играющего из под qterminal : VO: [xv] 320x240 => 320x240 Planar YV12 не удивляйся разрешению , снимал давно фотиком. Кость, фиг с ним, с разрешением. Я ещё и не такое тестирую. Погонял скрипт с новым блоком в ледяном. Получил засаду: - При попытке выхода из Х-сессии, автоматом с автологином снова заход в root Х-сессию и не могу залогиниться в Х-сы непревилегированного пользователя arch. - При попытке зайти из root Х-терминала в сессию пользователя arch через '# su - arch', само-собой не экспортируется переменная DISPLAY в окружение пользователя. И это приведёт к отказу работы скрипта в лайве ледяного из под непревилегированного пользователя arch. Поэтому, если запуск mplayer-vc из под непревилегированного пользователя arch, то: - пользователь должен быть в группе video. - переменная DISPLAY должна быть экспортирована в окружение пользователя: '$ export DISPLAY=:0' (echo $DISPLAY). Т.е. тот дисплей в котором запускается скрипт. Иначе скрипт в арче под непревилегированным откажется работать по причине пустой переменной DISPLAY: Код [arch<>archiso ~]$ grep -i '^vo\|^err' ./mplayer-output.txt | head -n 2 vo: couldn't open the X11 display ()! Error opening/initializing the selected video_out (-vo) device. Но принудительно в скрипте указывать опцию -display с параметром нельзя. Поскольку в мультисессии, неизвестно, в каком дисплее будет запускаться скрипт в Х-сессии. (у меня на домашней станции, как правило DISPLAY не один, - мультисессии) '-vo xv' с else выброшено и нафик не надо, поскольку автоматом по-дефолту и в альте и в арче, при запуске скрипта в Х-сах, подхватывается xv. Здесь главное чтобы переменная DISPLAY была не пустая. И скрипт отработает. Листинг универсального скрипта и под арч и под альты, для запуска в виртуальной консоли и в Х-терминале. Код # cat /usr/bin/mplayer-vc Код #!/bin/bash # mplayer-vc # # Script for full-screen viewing of local video in mplayer via console. # This script automatically adjusts the video output to full screen # for a monitor with any resolution and does not require the user # to enter additional options. # Copyright 2018 Yury Pakin <zxwarior<>yandex.ru> # LICENSE: # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # parse options opt=1 helptext="\ Script for full-screen viewing of local video in mplayer through console. This script automatically adjusts the video output to full screen for a monitor with any resolution and does not require additional options. Usage: mplayer-vc /path/to/videofile -h --help print this help text " [ $# -ne 0 ] || set -- -h while test "$opt" = "1"; do case "$1" in # fbgs options -h | --help) printf "$helptext" exit 1 ;; # others options -*) echo -e "\nunknown option: $1\n" exit 1 ;; *) opt=0 ;; esac done # Проверка наличия локального файла file "$*" &>/dev/null if [ "$?" != 0 ] then echo -e "\nNo such file\n" exit 0 fi VIDEOFILE=$(echo "$*") # Разрешение оригинального видеофайла по X VIDEOWIDTH=`mediainfo "$VIDEOFILE" | grep 'Width' | awk '{printf $3}'` # Разрешение оригинального видеофайла по Y VIDEOHEIGHT=`mediainfo "$VIDEOFILE" | grep 'Height' | awk '{printf $3}'` # Пропорции изображения видео в десятичном виде VIDEOASPECT=`echo "$VIDEOWIDTH/$VIDEOHEIGHT" | bc -l` # Пропорции фреймбуфера в десятичном виде 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}'` # Если aspect (пропорции) фреймбуфера больше чем aspect видеофайла, # то вычислить коэффициент масштабирования до Y фреймбуфера, # затем вычислить по коэффициенту максимально допустимый размер # в пикселах при масштабирование видеофайла по X, чтобы при # масштабировании по -xy, видеофайл не выходил за пределы экрана # по координате Y if [[ $FBASPECT > $VIDEOASPECT ]] then VSIZEXXX=`echo "$FBHEIGHT/$VIDEOHEIGHT" | bc -l` XVSIZE=`echo "$VIDEOWIDTH*$VSIZEXXX" | bc -l` # иначе вычислить X фреймбуфера else XVSIZE=`fbset --test|grep geometry|awk '{print $2}'` fi # Опция/параметр выбора драйвера вывода видео # для виртуальной консоли VIDEOOUTPUT="" DEVOUT=`tty | cut -f3 -d / | head -c 3` if [ $DEVOUT = "tty" ] then setterm --blank 0 VIDEOOUTPUT="-vo fbdev2" fi # пропорционально масштабировать по коэффициенту # до X фреймбуфера, - в переменной XVSIZE mplayer -nocache -softvol $VIDEOOUTPUT -xy $XVSIZE -fs -zoom -framedrop "$VIDEOFILE" &>/dev/null В арче скрипт отработает нормально: Код [arch<>archiso ~]$ mplayer-vc ./Trace\ Adkins\ -\ Just\ Fishin\'-IheODRwalEw.mp4 Код [arch<>archiso ~]$ grep -i '^vo\|^err' ./mplayer-output.txt | head -n 2 VO: [xv] 640x360 => 1365x768 Planar YV12 [fs] [zoom] Код [arch<>archiso ~]$ # tty
[arch<>archiso ~]$ grep -i '^vo\|^err' ./mplayer-output.txt | head -n 2 VO: [fbdev2] 1365x768 => 1365x768 BGRA [fs] [zoom] Сообщение отредактировал speccyfighter - 7.11.2019, 0:03 |
|
|
|
speccyfighter mplayer в консоли 11.1.2018, 20:10
kostyalamer Юра, может из первого скрипта собрать пакет, чтобы... 12.1.2018, 8:41
speccyfighter Цитата(kostyalamer @ 12.1.2018, 6:41) Фиг... 12.1.2018, 11:32
kostyalamer Юра, пакет я собрал, проверил и залил в p8 32-бита... 12.1.2018, 20:48
speccyfighter Цитата(kostyalamer @ 12.1.2018, 18:48) Юр... 13.1.2018, 9:50
speccyfighter Ничему и никому не доверяй.
Доверяй только термина... 13.1.2018, 10:19
dango_ Мне подождать опакечивание новой версии? 13.1.2018, 11:36
speccyfighter Цитата(dango_ @ 13.1.2018, 9:36) Мне подо... 13.1.2018, 11:37
speccyfighter Линукс, ты тупой как пень стоеросовый.
Я из-за теб... 13.1.2018, 21:45
speccyfighter Новая версия mplayer-vc-0.2
Изменения в версии 0.... 13.1.2018, 23:55
speccyfighter Изменён скрипт mplayer-vc
Код$ sdiff -w 230 ... 11.6.2018, 13:36
speccyfighter Скрипт проигрывает только локальные файлы.
Но скаж... 11.6.2018, 14:39
speccyfighter Окончательный вариант скрипта mplayer-vc v0.2.1
И... 12.6.2018, 14:23
kostyalamer Цитата(speccyfighter @ 12.6.2018, 14:23) ... 12.6.2018, 20:45
speccyfighter mplayer-vc (Movie Player for Virtual Console) для ... 28.10.2019, 22:08
knn Цитата(speccyfighter @ 11.1.2018, 20:10) ... 31.10.2019, 23:09
knn # потом уже увидел дату первого сообщения ( не зна... 1.11.2019, 6:59
kostyalamer Спасибо Юра, проверил - отлично работает ! При... 4.11.2019, 8:46
speccyfighter Цитата(kostyalamer @ 4.11.2019, 6:46) Спа... 5.11.2019, 23:25
YYY Цитата(speccyfighter @ 5.11.2019, 23:25) ... 6.11.2019, 12:15

speccyfighter Цитата(YYY @ 6.11.2019, 10:15) а может пр... 6.11.2019, 20:23

speccyfighter Цитата(speccyfighter @ 6.11.2019, 18:23) ... 6.11.2019, 21:05
kostyalamer Цитата(speccyfighter @ 5.11.2019, 23:25) ... 6.11.2019, 21:48
speccyfighter Система на alt-p8-sysv-tde-i586:
Тест в tty и pts ... 7.11.2019, 6:49
kostyalamer Цитата(speccyfighter @ 7.11.2019, 6:49) С... 7.11.2019, 8:28
speccyfighter Цитата(kostyalamer @ 7.11.2019, 6:28) Цит... 7.11.2019, 19:50
speccyfighter Оттестировал последнюю версию скрипта на этом лайв... 7.11.2019, 20:37
kostyalamer Юра, хз чего там в Альте, но в Арче твой скрипт пр... 7.11.2019, 20:52
speccyfighter Цитата(kostyalamer @ 7.11.2019, 18:52) Юр... 7.11.2019, 21:17
knn Цитата(kostyalamer @ 7.11.2019, 20:52) Юр... 25.11.2019, 9:34
kostyalamer Цитата(knn @ 25.11.2019, 9:34) и в Links... 25.11.2019, 22:10
speccyfighter Потрахался в лайве
Код$ cat /image/.disk/info... 8.11.2019, 21:05
kostyalamer Да, не слабо , жуть какая то. Видимо простой лин... 8.11.2019, 22:16
speccyfighter Цитата(kostyalamer @ 8.11.2019, 20:16) Да... 8.11.2019, 22:36
speccyfighter Цитата(kostyalamer @ 8.11.2019, 20:16) на... 8.11.2019, 22:56
kostyalamer Цитата(speccyfighter @ 8.11.2019, 22:56) ... 8.11.2019, 23:29
speccyfighter Хорошо. Так и порешили. Как доведу шэлл-код до ума... 8.11.2019, 23:37
speccyfighter Скрипт mplayer-vc переведён, исправлен и готов в т... 9.11.2019, 2:32
speccyfighter Завершающий этап тестирования в p8-sysv-tde и p9-x... 11.11.2019, 8:10
kostyalamer Цитата(speccyfighter @ 11.11.2019, 8:10) ... 11.11.2019, 8:29
speccyfighter Цитата(kostyalamer @ 11.11.2019, 6:29) Ка... 12.11.2019, 0:38
speccyfighter Было "хорошо", стало "ещё лучше... 11.11.2019, 10:21
speccyfighter Сейчас на прогоне этот скрипт. Прошёл тест на IceA... 11.11.2019, 10:44
kostyalamer Тогда так наверное и сделаем в Арче будет mplayer-... 12.11.2019, 8:51
speccyfighter Цитата(kostyalamer @ 12.11.2019, 6:51) Да... 13.11.2019, 3:46

kostyalamer Цитата(speccyfighter @ 13.11.2019, 3:46) ... 13.11.2019, 8:22
speccyfighter Цитата(kostyalamer @ 12.11.2019, 6:51) Да... 13.11.2019, 4:34
kostyalamer Юра , вот пакет : https://yadi.sk/d/wpOpaxqCL9j4d... 13.11.2019, 23:30
speccyfighter Цитата(kostyalamer @ 13.11.2019, 21:30) Ю... 14.11.2019, 7:11
kostyalamer Нет исходники лежат тут : http://altlinuxclub.ru/a... 14.11.2019, 8:06
kostyalamer Юра, твой скрипт в Aur-е : https://aur.archlinux.o... 14.11.2019, 23:58
kostyalamer В связи с недавно изменившимся стандартом : https:... 15.11.2019, 17:07
speccyfighter Цитата(kostyalamer @ 15.11.2019, 15:07) В... 16.11.2019, 1:33
speccyfighter Масса полезнейшего инфо по bash (для mplayer-vc)
... 24.11.2019, 0:39
speccyfighter Обработчик указанного пути для mplayer-vc:
Код... 24.11.2019, 12:24
YYY Цитата(speccyfighter @ 24.11.2019, 12:24)... 24.11.2019, 16:43
speccyfighter Код$ cat mplayer-vc-N02--single-or-many
# One... 25.11.2019, 0:23
speccyfighter Число, это математическая величина и пишется она б... 27.11.2019, 7:36
speccyfighter Похоже есть способ получше чем mediainfo:
Идентифи... 27.11.2019, 9:40
speccyfighter Обработчик нажатия клавиши Qq для выхода из бескон... 28.11.2019, 10:10
speccyfighter mplayer-vc версии 0.4.0
Код#!/bin/bash
# mp... 28.11.2019, 13:48
speccyfighter Ещё один недостаток mplayer-vc 0.4.0
- Субтитры в... 28.11.2019, 20:22
kostyalamer Отправил в Aur : https://aur.archlinux.org/package... 28.11.2019, 21:32
speccyfighter Цитата(kostyalamer @ 28.11.2019, 19:32) О... 28.11.2019, 21:50
kostyalamer Цитата(speccyfighter @ 28.11.2019, 21:50)... 28.11.2019, 22:04
speccyfighter Цитата(kostyalamer @ 28.11.2019, 20:04) В... 28.11.2019, 23:30
knn - у меня нет звука (и его регулировки) ни в Х, ни ... 29.11.2019, 8:16
knn как снять выхлоп( "беззвучный") - не зна... 29.11.2019, 8:33
kostyalamer У меня в консоли все нормально, звук есть , а в X-... 29.11.2019, 8:35
knn Цитата(kostyalamer @ 29.11.2019, 8:35) PS... 29.11.2019, 8:39
speccyfighter Цитата(kostyalamer @ 29.11.2019, 6:35) У ... 29.11.2019, 19:24
kostyalamer Цитата(speccyfighter @ 29.11.2019, 19:24)... 29.11.2019, 19:46
speccyfighter В лайве IceArch-0.988 у меня всё намного хуже чем ... 30.11.2019, 8:14
kostyalamer Юра, xterm есть в ледяном, но он не дружит с кирил... 30.11.2019, 8:47
speccyfighter Цитата(kostyalamer @ 30.11.2019, 6:47) На... 30.11.2019, 9:47
kostyalamer Цитата(speccyfighter @ 30.11.2019, 9:47) ... 30.11.2019, 10:38
kostyalamer ЦитатаНо будем оптимистами smile.gif - у меня всё ... 30.11.2019, 9:26
speccyfighter В секцию выбора устройства вывода, в версию 0.35, ... 14.7.2020, 14:12
speccyfighter Секция должна выглядеть где-то так:
Код# Option / ... 23.7.2020, 17:20
speccyfighter Полный листинг mplayer-vc v0.36.1
Код#!/bin/ba... 23.7.2020, 17:46
speccyfighter Проверил в альте версию 0.36.
При воспроизведении,... 23.7.2020, 21:24
speccyfighter Цитата(speccyfighter @ 23.7.2020, 19:24) ... 23.7.2020, 21:55
kostyalamer Цитата(speccyfighter @ 23.7.2020, 21:55) ... 23.7.2020, 22:11
speccyfighter Цитата(kostyalamer @ 23.7.2020, 20:11) Юр... 23.7.2020, 22:26
kostyalamer Цитата(speccyfighter @ 23.7.2020, 22:26) ... 23.7.2020, 22:35
kostyalamer Собрал пакет , погонял на рабочей системе в чистой... 24.7.2020, 8:51
kostyalamer К сожалению aur немного прилег :
Цитата503 - Servi... 24.7.2020, 22:56
kostyalamer Залил в Aur : https://aur.archlinux.org/packages/m... 25.7.2020, 1:07
knn Так, к слову, чтоб не было прецедентов по окончате... 25.7.2020, 17:19
speccyfighter Цитата(knn @ 25.7.2020, 15:19) Так, к сло... 25.7.2020, 19:19
knn Цитата(speccyfighter @ 25.7.2020, 19:19) ... 25.7.2020, 19:29
knn Юрий, тут тогда вопрос по "смежной теме... 25.7.2020, 19:57
speccyfighter Про screen я не в курсе. О нём у меня представлени... 25.7.2020, 22:54
knn падение Иксов от `mpv --vo=drm file` - сей... 26.7.2020, 4:39
speccyfighter Цитата(knn @ 26.7.2020, 2:39) `mpv --... 26.7.2020, 13:04
knn - получается относительно давно с iptv-mplayer-con... 26.7.2020, 7:30
speccyfighter Цитата(knn @ 26.7.2020, 5:30) pps
с запущ... 26.7.2020, 13:30
knn - кроме азбуки похоже пригодятся и инструменты ( р... 26.7.2020, 14:08![]() ![]() |
|
Текстовая версия | Сейчас: 9.11.2025, 18:23 |