![]() |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Поделиться |
![]()
Сообщение
#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 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Окончательный вариант скрипта mplayer-vc v0.2.1
Изменения: - добавлена лицензия - изменено содержание и метод вывода help - добавлен комментарий к процедуре проверки наличия файла - добавлена обработка бэкслэшей в полном пути к видеофайлу (допускает экранирование бэкслэшэм символов в пути к видеофайлу, таких как пробел, скобки и т.д.) Субъективно: Теперь скрипт достоин чтобы войти в любой репозиторий. После сборки пакета новой версии, консольный образ live-sysv рекомендуется обновить. Сообщение отредактировал speccyfighter - 12.6.2018, 14:27 |
|
|
![]()
Сообщение
#3
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
После сборки пакета новой версии, консольный образ live-sysv рекомендуется обновить. Обновлю, только давай подумаем что еще добавить / изменить в live-sysv , только в этой теме : http://forum.russ2.com/index.php?showtopic...amp;#entry50178 |
|
|
![]()
Сообщение
#4
|
|
Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
mplayer-vc (Movie Player for Virtual Console) для IceArch
Единственное отличие этой версии скрипта от версии для ALT Linux: Судя по всему, mplayer для archlinux не умеет обнаруживать единственно доступное устройство вывода видео. Поэтому в последней строке скрипта, использование опции '-vo fbdev2' обязательно. Без этой опции/параметра скрипт в арче не отработает и завершится без вывода ошибок. С этой же опцией скрипт может использоваться и для ALT Linux, но впрочем это необязательно. Скрипт обкатывался на кард-ридере в IceArch-0.984-x86_64.iso Код [arch<>archiso ~]$ ls /media/ IceArch_0.984 на клипах Код [arch<>archiso ~]$ find ./clips/ -name "Trace*" -o -name "Alan*" ./clips/Country-video/Trace Adkins - Just Fishin'-IheODRwalEw.3gp ./clips/Country-video/Trace Adkins - Just Fishin'-IheODRwalEw.mp4 ./clips/Country-video/Trace Adkins - You're Gonna Miss This-lBDN8yWyNYU.3gp ./clips/Country-video/Trace Adkins - You're Gonna Miss This-lBDN8yWyNYU.mp4 ./clips/Country-video/Alan Jackson, Jimmy Buffett - It's Five O' Clock Somewhere-BPCjC543llU.3gp В ледяном арче потребовалась установка дополнительных пакетов fbset и mediainfo, а также добавление непревилегированного пользователя в группу video. Наличие исполняемых файлов file grep echo awk sed setterm для работы скрипта также обязательно. Комментарии в скрипте всё ещё не переведены, - это краткое описание алгоритма работы скрипта. Листинг скрипта для арча: Код [arch<>archiso ~]$ 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 (ака Speccyfighter) <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 # пропорционально масштабировать по коэффициенту # до X фреймбуфера, - в переменной XVSIZE setterm --blank 0; mplayer -nocache -softvol -vo fbdev2 -xy $XVSIZE -fs -zoom -framedrop "$VIDEOFILE" &>/dev/null (Пустая строка в конце файла обязательна!) |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 14.6.2025, 20:24 |