IPB

Здравствуйте, гость ( Вход | Регистрация )

> mplayer в консоли, упрощение просмотра видеофайлов в консоли
Поделиться
speccyfighter
сообщение 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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
speccyfighter
сообщение 11.11.2019, 10:44
Сообщение #2


Крупный специалист
*****

Группа: Пользователь
Сообщений: 461
Регистрация: 1.5.2013
Вставить ник
Цитата
Пользователь №: 2379
Страна: Беларусь
Город: Не указан
Пол: Муж.



Репутация: 1


Сейчас на прогоне этот скрипт. Прошёл тест на IceArch в tty от непревилегированного. Но с тестом застряло на альтовых правах доступа на /dev/fb0 в системах на sysv для непревилегированного с группой video. На альтах с systemd (SL820), непревилегированный вообще ложит болт на группу и права доступа на фреймбуфер при проигрывании видео в tty.

Код
$ 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.

To play video in the virtual console, the user must be in the video group.
On alsa systems, if the sound card is not in socket 0, reindex the sound cards.

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\nUse -h or --help.\n"
                        exit 1
                       ;;
                *)      opt=0
                       ;;
        esac
done


# Checking for a local file
file "$*" &>/dev/null
if [ "$?" != 0 ]
    then
    echo -e "\nNo such file\n"
    exit 0
fi


VIDEOFILE=$(echo "$*")


# Resolution of the original video file in X coordinate
VIDEOWIDTH=`mediainfo "$VIDEOFILE" | grep 'Width' | awk '{printf $3}'`

# Resolution of the original video file in Y coordinate
VIDEOHEIGHT=`mediainfo "$VIDEOFILE" | grep 'Height' | awk '{printf $3}'`

# Video image proportions in decimal
VIDEOASPECT=`echo "$VIDEOWIDTH/$VIDEOHEIGHT" | bc -l`


# Decimal proportions of framebuffer
FBASPECT=`fbset --test | grep mode | awk -F '"' '{print $2}' | sed 's/x/\//' | bc -l |sed 's/^\(......\).*/\1/'`

# Framebuffer resolution in Y coordinate in pixels
FBHEIGHT=`fbset --test | grep mode | awk -F '"' '{print $2}' | awk -F 'x' '{printf $2}'`


# If the framebuffer aspect ratio is greater than the aspect of
# the video file, then calculate the scaling factor to
# framebuffer Y. Then, calculate by the coefficient the maximum
# allowable size in pixels when scaling the video file in X, so
# that when scaling in -xy, the video file does not go beyond
# the screen in the Y coordinate.
if [[ $FBASPECT > $VIDEOASPECT ]]
    then
        VSIZEXXX=`echo "$FBHEIGHT/$VIDEOHEIGHT" | bc -l`
        XVSIZE=`echo "$VIDEOWIDTH*$VSIZEXXX" | bc -l`
# otherwise compute X framebuffer
    else
        XVSIZE=`fbset --test|grep geometry|awk '{print $2}'`
fi


# Option / parameter for selecting video output driver
# for virtual console
VIDEOOUTPUT=""

DEVOUT=`tty | cut -f3 -d / | head -c 3`

if [ $DEVOUT = "tty" ]
    then
        setterm --blank 0
        VIDEOOUTPUT="-vo fbdev2"
fi


# Option/parameter for selecting audio output driver
# pulse or alsa
AUDIOOUTPUT=""
PULSEENABLE=`ls -1 /usr/bin/ | grep ^pulseaudio | wc -l`
if [ $PULSEENABLE != 0 ]
    then
    AUDIOOUTPUT="-ao pulse"
    else
    AUDIOOUTPUT="-ao alsa"
fi


# Scale proportionally by factor to the X coordinate
# of the framebuffer, in the XVSIZE variable.
mplayer -nocache -softvol $VIDEOOUTPUT -xy $XVSIZE -fs -zoom -framedrop $AUDIOOUTPUT "$VIDEOFILE" &>/dev/null


Если нужен тестовый выброс проигрывания видео, заменить в последней строке /dev/null на $HOME/mplayer-output.txt
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- 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
- - kostyalamer   Юра, вот vo из mplayer-а играющего из под qtermina...   6.11.2019, 22:42
|- - speccyfighter   Цитата(kostyalamer @ 6.11.2019, 20:42) Юр...   7.11.2019, 0:01
- - 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
2 страниц V   1 2 >


Ответить в эту темуОткрыть новую тему
( Гостей: 1 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 14.6.2025, 20:37