IPB

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

4 страниц V   1 2 3 > »   
Ответить в эту темуОткрыть новую тему
> 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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 12.1.2018, 8:41
Сообщение #2


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Юра, может из первого скрипта собрать пакет, чтобы он лежал в /usr/bin ? Я могу конечно сунуть его в скелетон и заодно костыльнуть в root-овский хомяк , но пакетом лучше. Фиг с ними с пробелами , как у него с кириллицей в путях ?
Альяс с mplayer-ом могу закостылить прямо в сборку.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 12.1.2018, 11:32
Сообщение #3


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

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



Репутация: 1


Цитата(kostyalamer @ 12.1.2018, 6:41) *
Фиг с ними с пробелами , как у него с кириллицей в путях ?


Кириллицу проглатывает на ура.
В скрипте:
- Убраны отладочные echo;
- В строку запуска добавлено отключение затемнения экрана;
- В строку запуска добавлено отключение кеша:
По какой-то причине, если кеш не отключен, при воспроизведении видеопотока, через небольшое время воспроизведение прерывается.

При текущем скрипте, имеется возможность воспроизведения видеопотока:
Код
$ mplayer-vc -playlist /path/videodtream.pls

где
videostream.pls
плэйлист с полным http адресом на видеофайл.
Остаётся только выуживать прямой линк на видеофайл. Количество опций сокращается до минимума:
По наличию/отсутствию опции -playlist

Цитата(kostyalamer @ 12.1.2018, 6:41) *
Юра, может из первого скрипта собрать пакет, чтобы он лежал в /usr/bin ? Я могу конечно сунуть его в скелетон и заодно костыльнуть в root-овский хомяк , но пакетом лучше.
Альяс с mplayer-ом могу закостылить прямо в сборку.


Ну и хорошо, тогда так и делаем..
Для первого скрипта требуется обязательная зависимость на пакет mediainfo:
Для анализа свойств видеофайла: X+Y+aspect (пропорции).

Обязательные зависимости для первого скрипта:
Код
$ rpm -qf $(which mediainfo)
mediainfo-17.12-alt1.i586

Код
$ rpm -qf $(which sed)
sed-4.4.0.10.0580-alt1.i586

Код
$ rpm -qf $(which awk)
gawk-4.1.0-alt2.i586

Код
$ rpm -qf $(which grep)
grep-3.0.0.12.e2b7-alt1.i586

Код
$ rpm -qf $(which echo)
coreutils-8.27.0.23.f4570-alt1.i586

Код
$ rpm -qf $(which rev)
util-linux-2.30.2-alt1.i586

Код
$ rpm -qf $(which setterm)
util-linux-2.30.2-alt1.i586

Код
$ rpm -qf $(which fbset)
fbset-2.1-alt2.i586

Код
$ rpm -qf $(which mplayer)
mplayer-1.3.0-alt1.i586


Сообщение отредактировал speccyfighter - 12.1.2018, 17:17
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 12.1.2018, 20:48
Сообщение #4


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Юра, пакет я собрал, проверил и залил в p8 32-бита:
http://altlinuxclub.ru/repo/Repo_P8/SRPMS.....1-alt1.src.rpm
Все дальнейшие перепакечивания и изменения этого пакета на тебе как на авторе , будешь заодно и его мантейнером smile.gif
Пакет я сделал простенький - дальше при необходимости добавишь все что надо. Сборочные зависимости добавлены через
buildreq -bi , поэтому для p7 не собирается - не хватает 3-ей питонщины ( она по-моему там нафиг не нужна ).
Если хочешь видеть в 7-ой репе ,то достаточно либо сделать под 7-кой buildreq , либо поправить сборочные зависимости вручную. В общем ты хозяин пакета - тебе решать.
Видео показывает отлично, будет в следующей сборке консольного минимала good.gif
PS Потихоньку душу удава, процесс идет biggrin.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 13.1.2018, 9:50
Сообщение #5


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

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



Репутация: 1


Цитата(kostyalamer @ 12.1.2018, 18:48) *
Юра, пакет я собрал, проверил и залил в p8 32-бита:
http://altlinuxclub.ru/repo/Repo_P8/SRPMS.....1-alt1.src.rpm
Все дальнейшие перепакечивания и изменения этого пакета на тебе как на авторе , будешь заодно и его мантейнером smile.gif
Пакет я сделал простенький - дальше при необходимости добавишь все что надо. Сборочные зависимости добавлены через
buildreq -bi , поэтому для p7 не собирается - не хватает 3-ей питонщины ( она по-моему там нафиг не нужна ).
Если хочешь видеть в 7-ой репе ,то достаточно либо сделать под 7-кой buildreq , либо поправить сборочные зависимости вручную. В общем ты хозяин пакета - тебе решать.
Видео показывает отлично, будет в следующей сборке консольного минимала good.gif


OK

Цитата(kostyalamer @ 12.1.2018, 18:48) *
PS Потихоньку душу удава, процесс идет biggrin.gif


Это хорошо biggrin.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 13.1.2018, 10:19
Сообщение #6


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

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



Репутация: 1


Ничему и никому не доверяй.
Доверяй только терминалу.



Вот гадство. Даже при фреймбуфере 4x3 наткнулся на ролик с отказом отображеия видео:
Редкий случай, но чинить надо
Код
mplayer -nocache -softvol -xy 1024 -fs -zoom 2>./4x3-aspect-incorrect.txt ./film.3gp
vo: couldn't open the X11 display ()!
[VO_SDL] SDL initialization failed: Unable to open mouse.
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
vo: couldn't open the X11 display ()!
[AO_ALSA] alsa-lib: pcm_hw.c:1695:(snd_pcm_hw_open) open '/dev/snd/pcmC0D0p' failed (-77): File descriptor in bad state
[fbdev2] Screensize is smaller than video size (1024x768 < 1024x772)
FATAL: Cannot initialize video driver.
...
[fbdev2] Screensize is smaller than video size (1024x768 < 1024x772)
FATAL: Cannot initialize video driver.
Too many buffered pts
...


MPlayer interrupted by signal 2 in module: decode video
[fbdev2] Screensize is smaller than video size (1024x768 < 1024x772)
FATAL: Cannot initialize video driver.
[fbdev2] Screensize is smaller than video size (1024x768 < 1024x772)
FATAL: Cannot initialize video driver.
Too many buffered pts
...


MPlayer interrupted by signal 2 in module: decode video


aspect говорит что это 4:3
Код
mediainfo ./film.3gp | grep Wid|Heigh|aspect
Width                                    : 318 pixels
Height                                   : 240 pixels
Display aspect ratio                     : 4:3


А вот хрен там, если пересчитать Width и Height
Ни разу это не 4:3
Код
echo '318/240'|bc -l
1.32500000000000000000


При масшабировании по X фреймбуфера (-xy N), ролик не влезет в рамки Y фреймбуфера и mplayer откажется отображать видео, а думал что это коснётся только widescreen мониторов.
А вот хрен:
Код
fbset --test

mode "1024x768"
    geometry 1024 768 1024 768 32
    timings 0 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,8/24
endmode

Код
echo 1024/768|bc -l
1.33333333333333333333


Пришлось менять алгоритм анализа пропорций фреймбуфера и видео по реальным X и Y фильма и фреймбуфера. И изменить комментарий к условию.
Также добавлена опция -framedrop
Изменённый скрипт:
Код
$ cat /home/user/mplayer-vc
#!/bin/bash

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 -xy $XVSIZE -fs -zoom -framedrop $VIDEOFILE &>/dev/null


Сообщение отредактировал speccyfighter - 13.1.2018, 10:31
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
dango_
сообщение 13.1.2018, 11:36
Сообщение #7


Профессионал
*******

Группа: Активный Пользователь
Сообщений: 1194
Регистрация: 10.4.2015
Вставить ник
Цитата
Пользователь №: 2798
Страна: Казахстан
Город: Уральск
Пол: Муж.



Репутация: 6


Мне подождать опакечивание новой версии?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 13.1.2018, 11:37
Сообщение #8


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

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



Репутация: 1


Цитата(dango_ @ 13.1.2018, 9:36) *
Мне подождать опакечивание новой версии?


Да Дан, подожди. Сегодня поправлю и пересоберу.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 13.1.2018, 21:45
Сообщение #9


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

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



Репутация: 1


Линукс, ты тупой как пень стоеросовый.
Я из-за тебя обработку ошибок только в 9-том часу вечера закончил, дубина ты.


Обработка второго if условия на наличие файла:
Код
$ cat mplayer-vc-chk-enable-file
#!/bin/bash


echo $*
if [ -z "$*" ]
    then
        echo -e "\nUsage: mplayer-vc /path/to/videofile\n"
        echo -e "The path to the file must not contain spaces\n"
        exit 0
fi

echo $*

if [ ! -f "$*" ]
    then
        echo -e "\nNo such file\n"
        exit 0
    else
        echo -e "\nFile enabled\n"
        exit 0
fi


#file $@ &>/dev/null
#if [ "$?" != 0 ]
#    then
#        echo -e "\nNo such file\n"
#        exit 0
#    else
#        echo -e "\nFile enabled\n"
#        exit 0
#fi
exit 0

Код
mplayer-vc-chk-enable-file ./Хроники\ Риддика.avi &>if2-chk.txt


Ну ты и дубина...
Ну как же enabled, если путь не обрабатывается, если пробелы не экранированы бэкслешем
Код
$ cat if2-chk.txt
./Хроники Риддика.avi
./Хроники Риддика.avi

File enabled



Из-за тебя болвана пришлось изобретать проверку костылём.
Смотри как надо и учись:
Код
$ cat mplayer-vc-chk-enable-file
#!/bin/bash


echo $*
if [ -z "$*" ]
    then
        echo -e "\nUsage: mplayer-vc /path/to/videofile\n"
        echo -e "The path to the file must not contain spaces\n"
        exit 0
fi

echo $*

#if [ ! -f "$*" ]
#    then
#        echo -e "\nNo such file\n"
#        exit 0
#    else
#        echo -e "\nFile enabled\n"
#        exit 0
#fi


file $@ &>/dev/null
if [ "$?" != 0 ]
    then
        echo -e "\nNo such file\n"
        exit 0
    else
        echo -e "\nFile enabled\n"
        exit 0
fi
exit 0

Код
mplayer-vc-chk-enable-file ./Хроники\ Риддика.avi &>if3-chk.txt

Код
$ cat if3-chk.txt
./Хроники Риддика.avi
./Хроники Риддика.avi
./Хроники:   ERROR: cannot open `./Хроники' (No such file or directory)
Риддика.avi: ERROR: cannot open `Риддика.avi' (No such file or directory)

No such file


Ну конечно же No such file: после парсинга в переменную, всего что стоит после команды, поисчезали бэкслэши, а без них полный путь не обрабатывается и должно быть Нет такого файла. И быть его не может.


Файл в наличии, пробелов в пути нет:
Код
$ cat if3-1-chk.txt
./Голубой_Гром.240.mp4
./Голубой_Гром.240.mp4
./Голубой_Гром.240.mp4: ISO Media, MPEG v4 system, version 1

File enabled



Зря я там выше ляпнул про костыллятор. Нанострдамил на свою голову.
Блин, всё бы ничего, но на эти проверки время же тратится, от нажатия Enter до начала проигрывания...
А этой фигни не должно быть. Ну никак не должно быть.


Сообщение отредактировал speccyfighter - 13.1.2018, 22:05
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 13.1.2018, 23:55
Сообщение #10


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

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



Репутация: 1


Новая версия mplayer-vc-0.2

Изменения в версии 0.2:
- Исправлен алгоритм проверки соотношения сторон фреймбуфера и видеофайла
- Добавлена опция -framedrop
- Добавлен вывод помощи при отсутствии пути к видеофайлу
- Добавлена проверка на наличие файла


Пакет установлен в систему sysv-xfce и проверен.


Сообщение отредактировал speccyfighter - 13.1.2018, 23:58
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 11.6.2018, 13:36
Сообщение #11


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

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



Репутация: 1


Изменён скрипт mplayer-vc
Код
$ sdiff -w 230 $HOME/mplayer-vc-new-2.sh $HOME/mplayer-vc/mplayer-vc-0.2/mplayer-vc
#!/bin/bash                                                                                                             #!/bin/bash


echo $*                                                                                                                 echo $*
if [ -z "$*" ]                                                                                                          if [ -z "$*" ]
    then                                                                                                                    then
        echo -e "\nUsage: mplayer-vc /path/to/videofile\n"                                                                      echo -e "\nUsage: mplayer-vc /path/to/videofile\n"
        echo -e "The path to the file must not contain spaces\n"                                                                echo -e "The path to the file must not contain spaces\n"
        exit 0                                                                                                                  exit 0
fi                                                                                                                      fi


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


VIDEOFILE=$(echo "$*")                                                                                                  VIDEOFILE=$(echo "$*")

# Разрешение оригинального видеофайла по X                                                                              # Разрешение оригинального видеофайла по X
VIDEOWIDTH=`mediainfo "$VIDEOFILE" | grep 'Width' | awk '{printf $3}'`                                            |     VIDEOWIDTH=`mediainfo $VIDEOFILE | grep 'Width' | awk '{printf $3}'`
# Разрешение оригинального видеофайла по Y                                                                              # Разрешение оригинального видеофайла по Y
VIDEOHEIGHT=`mediainfo "$VIDEOFILE" | grep 'Height' | awk '{printf $3}'`                                          |     VIDEOHEIGHT=`mediainfo $VIDEOFILE | grep 'Height' | awk '{printf $3}'`
# Пропорции изоражения видео в десятичном виде                                                                          # Пропорции изоражения видео в десятичном виде
VIDEOASPECT=`echo "$VIDEOWIDTH/$VIDEOHEIGHT" | bc -l`                                                                   VIDEOASPECT=`echo "$VIDEOWIDTH/$VIDEOHEIGHT" | bc -l`

# Пропорции фреймбуфера в десятичном виде                                                                               # Пропорции фреймбуфера в десятичном виде
FBASPECT=`fbset --test | grep mode | awk -F '"' '{print $2}' | sed 's/x/\//' | bc -l |sed 's/^\(......\).*/\1/          FBASPECT=`fbset --test | grep mode | awk -F '"' '{print $2}' | sed 's/x/\//' | bc -l |sed 's/^\(......\).*/\1/
# Разрешение фреймбуфера по Y в пикселах                                                                                # Разрешение фреймбуфера по Y в пикселах
FBHEIGHT=`fbset --test | grep mode | awk -F '"' '{print $2}' | awk -F 'x' '{printf $2}'`                                FBHEIGHT=`fbset --test | grep mode | awk -F '"' '{print $2}' | awk -F 'x' '{printf $2}'`


# Если aspect (пропорции) фреймбуфера больше чем aspect видеофайла,                                                     # Если aspect (пропорции) фреймбуфера больше чем aspect видеофайла,
# то вычислить коэффициент масштабирования до Y фреймбуфера,                                                            # то вычислить коэффициент масштабирования до Y фреймбуфера,
# затем вычислить по коэффициенту максимально допустимый размер                                                         # затем вычислить по коэффициенту максимально допустимый размер
# в пикселах при масштабирование видеофайла по X, чтобы при                                                             # в пикселах при масштабирование видеофайла по X, чтобы при
# масштабировании по -xy, видеофайл не выходил за пределы экрана                                                        # масштабировании по -xy, видеофайл не выходил за пределы экрана
# по координате Y                                                                                                       # по координате Y
if [[ $FBASPECT > $VIDEOASPECT ]]                                                                                       if [[ $FBASPECT > $VIDEOASPECT ]]
    then                                                                                                                    then
        VSIZEXXX=`echo "$FBHEIGHT/$VIDEOHEIGHT" | bc -l`                                                                        VSIZEXXX=`echo "$FBHEIGHT/$VIDEOHEIGHT" | bc -l`
        XVSIZE=`echo "$VIDEOWIDTH*$VSIZEXXX" | bc -l`                                                                           XVSIZE=`echo "$VIDEOWIDTH*$VSIZEXXX" | bc -l`
# иначе вычислить X фреймбуфера                                                                                         # иначе вычислить X фреймбуфера
    else                                                                                                                    else
        XVSIZE=`fbset --test|grep geometry|awk '{print $2}'`                                                                    XVSIZE=`fbset --test|grep geometry|awk '{print $2}'`
fi                                                                                                                      fi


# пропорционально масштабировать по коэффициенту                                                                        # пропорционально масштабировать по коэффициенту
# до X фреймбуфера, - в переменной XVSIZE                                                                               # до X фреймбуфера, - в переменной XVSIZE
setterm --blank 0; mplayer -nocache -softvol -xy $XVSIZE -fs -zoom -framedrop "$VIDEOFILE" &>/dev/null            |     setterm --blank 0; mplayer -nocache -softvol -xy $XVSIZE -fs -zoom -framedrop $VIDEOFILE &>/dev/null

Код
$ diff $HOME/mplayer-vc-new-2.sh $HOME/mplayer-vc/mplayer-vc-0.2/mplayer-vc
13c13
< file "$*" &>/dev/null
---
> file $* &>/dev/null
24c24
< VIDEOWIDTH=`mediainfo "$VIDEOFILE" | grep 'Width' | awk '{printf $3}'`
---
> VIDEOWIDTH=`mediainfo $VIDEOFILE | grep 'Width' | awk '{printf $3}'`
26c26
< VIDEOHEIGHT=`mediainfo "$VIDEOFILE" | grep 'Height' | awk '{printf $3}'`
---
> VIDEOHEIGHT=`mediainfo $VIDEOFILE | grep 'Height' | awk '{printf $3}'`
54c54
< setterm --blank 0; mplayer -nocache -softvol -xy $XVSIZE -fs -zoom -framedrop "$VIDEOFILE" &>/dev/null
---
> setterm --blank 0; mplayer -nocache -softvol -xy $XVSIZE -fs -zoom -framedrop $VIDEOFILE &>/dev/null


Теперь mplayer-vc умеет в пути к файлу обрабатывать бэкслэши, экранирующие символы (пробел, восклицательный знак и т.д.)

Из окончательного варианта скрипта убрана строка предупреждающая о том, что полный путь к видеофайлу не должен содержать пробелов:
Код
$ cat $HOME/mplayer-vc-new-2.sh
#!/bin/bash


echo $*
if [ -z "$*" ]
    then
        echo -e "\nUsage: mplayer-vc /path/to/videofile\n"
        exit 0
fi


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 -xy $XVSIZE -fs -zoom -framedrop "$VIDEOFILE" &>/dev/null


Скрипт воспроизводит только локальные файлы.
Алгоритм остался прежним.
Скрипт по-прежнему работает и в tty и в X-сах.
Скрит проверен на работоспособность с бэклэшами перед пробелами и восклицательным знаком.
Однако при запуске в X-сах предупреждает:
setterm: terminal xterm does not support --blank

Это версия:
mplayer-vc-0.2.1
- added processing of backslashes in the path to the file
- добавлена обработка бэкслэшей в пути к файлу

Оригинальное имя исполняемого файла также остаётся прежним:
mplayer-vc
vc - своего рода аббревиатура, - видеоконсоль

В скрит надо было бы добавить лицензию, но честно говоря, мне лень smile.gif


Теоретически можно было бы добавить расширенный хэлп по этой идее:
https://forum.altlinux.org/index.php?topic=...24233#msg324233
но честно говоря, я не знаю зачем это нужно.
Поскольку идея скрипта, это максимальное упрощение для пользователя и автоматизация shell по-максимуму.
Всё что может выносить мозг пользователю, а это опции и параметры, должно быть убрано в автомат.
Идея в том, чтобы донести до пользователя идею и философию ZX Spectrum через bash-скрипт:
- shell может быть простым для повседневного использования (в рамках пользовательских задач).

Хочется надеяться, что в последней версии скрипта (0.2.1), в должной мере реализован принцип KISS:
Keep It Simple Stupid
Делай проще тупица


Сообщение отредактировал speccyfighter - 11.6.2018, 14:41
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 11.6.2018, 14:39
Сообщение #12


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

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



Репутация: 1


Скрипт проигрывает только локальные файлы.
Но скажем если закомментировать (или как-то переделать) процедуру проверки наличия файла, то скрипт хоть и сыпет ошибками, но умудряется проигрывать и видеопоток, с прямым линком в файле, в котором лежит прямая http-ссылка на видеофайл:

Пример воспроизведения видеопотока через mplayer-vc-0.2.1 с закомментированной процедурой проверки наличия видеофайла:
Код
$HOME/mplayer-vc-new-2.sh $(<$HOME/video-url.txt)


Сам прямой линк содержащийся в файле video-url.txt, по понятнім причинам не приводится.

В теории процедуру проверки наличия файла можно было бы просто закомментировать, но тогда при отсутствии файла, будет вываливаться ошибка малопонятная пользователю. И это может его шокировать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 12.6.2018, 14:23
Сообщение #13


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

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



Репутация: 1


Окончательный вариант скрипта mplayer-vc v0.2.1

Изменения:
- добавлена лицензия
- изменено содержание и метод вывода help
- добавлен комментарий к процедуре проверки наличия файла
- добавлена обработка бэкслэшей в полном пути к видеофайлу
(допускает экранирование бэкслэшэм символов в пути к видеофайлу, таких как пробел, скобки и т.д.)

Субъективно:
Теперь скрипт достоин чтобы войти в любой репозиторий.
После сборки пакета новой версии, консольный образ live-sysv рекомендуется обновить.

Сообщение отредактировал speccyfighter - 12.6.2018, 14:27
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 12.6.2018, 20:45
Сообщение #14


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 12.6.2018, 14:23) *
После сборки пакета новой версии, консольный образ live-sysv рекомендуется обновить.

Обновлю, только давай подумаем что еще добавить / изменить в live-sysv , только в этой теме :
http://forum.russ2.com/index.php?showtopic...amp;#entry50178
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 28.10.2019, 22:08
Сообщение #15


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

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



Репутация: 1


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

(Пустая строка в конце файла обязательна!)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 31.10.2019, 23:09
Сообщение #16


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


Цитата(speccyfighter @ 11.1.2018, 20:10) *
На дух не переносит пробелов в пути:

буду пробовать в 3-ю,5-ю или в какую-еще строку вставить:
Код
IFS=$'\n'

( с mpv - помогает)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 1.11.2019, 6:59
Сообщение #17


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


# потом уже увидел дату первого сообщения ( не знаю, может в последней версии и так налажено ...)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 4.11.2019, 8:46
Сообщение #18


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Спасибо Юра, проверил - отлично работает ! Прикрутил к mc , добавил пакеты и отправил в новую версию ледяного ( в /usr/local/bin )
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 5.11.2019, 23:25
Сообщение #19


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

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



Репутация: 1


Цитата(kostyalamer @ 4.11.2019, 6:46) *
Спасибо Юра, проверил - отлично работает ! Прикрутил к mc , добавил пакеты и отправил в новую версию ледяного ( в /usr/local/bin )

Прошлой ночью, ну сова же smile.gif , появилась мысль ввести в скрипт запрет на запуск скрипта в X-терминале.

Зачем это нужно:
Из-за необходимости -vo fbdev2 для арча, скрипт для альтов и для арча начал разъезжаться и это мне нифига не нравится. Поскольку это ломает философию платформы ZX Spectrum, - это должно работать на любой архитектуре.

Как оно мысленно выстраивается:
Введение в скрипт и для арча и для альта -vo fbdev2.
Но при явном указании fbdev2, при запуске в /dev/pts/* (в X-терминале) вылезет неприятный баг.
Отсюда возникает необходимость запрета запуска скрипта mplayer-vc в /dev/pts/*, но разрешения запуска в /dev/tty* (виртуальном терминале). И это даст единообразие кода скрипта для арча и альтов. К тому же не будет проявляться ошибка на setterm --blank 0, проявляющаяся в любом X-терминале.

Обработка на разрешение запуска в tty и запрета запуска в pts может быть где-то такой:

Алгоритм обработки:
Парсить выброс команды tty без опций. Если запуск mplayer-vc в pts, то предупредить пользователя и остановить выполнение скрипта. Иначе, если запуск в tty, продолжить выполнение.
/dev/pts/* - это X-терминал
/dev/tty* - это виртуальная консоль
Код
$ cat search-tty-2.sh
DEVOUT=`tty | cut -f3 -d / | head -c 3`

if [ $DEVOUT != "tty" ]
    then
        echo -e "\nIt is not /dev/tty*\nRun mplayer-vc in virtual console\n"
        exit 0
fi

Проще говоря:
Скрипт mplayer-vc с этим кодом, будет работать в виртуальной консоли, но не будет работать в X-терминале.

Принимаются предложения с "За" и "Нафик". С аргументацией. smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
YYY
сообщение 6.11.2019, 12:15
Сообщение #20


Профессионал
*******

Группа: Активный Пользователь
Сообщений: 1669
Регистрация: 12.10.2010
Вставить ник
Цитата
Пользователь №: 1950
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 8


Цитата(speccyfighter @ 5.11.2019, 23:25) *
Скрипт mplayer-vc с этим кодом, будет работать в виртуальной консоли, но не будет работать в X-терминале.
Принимаются предложения с "За" и "Нафик". С аргументацией. smile.gif


а может просто если иксы найдены, то не добавлять в строку запуска

-vo fbdev2

?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 6.11.2019, 20:23
Сообщение #21


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

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



Репутация: 1


Цитата(YYY @ 6.11.2019, 10:15) *
а может просто если иксы найдены, то не добавлять в строку запуска

-vo fbdev2

?

Интересная мысль.

Скрипт с этим блоком надо протестировать в арче (перенаправив весь вывод mplayer в файл)
Код
# sed -n '105,118p' /usr/bin/mplayer-vc-copy
# Выбор опция/параметр устройства вывода видео
# для виртуальной консоли или X-теминала
VIDEOOUTPUT=""

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

if [ $DEVOUT = "tty" ]
    then
        setterm --blank 0
        VIDEOOUTPUT=" -vo fbdev2 "
#    else
#        VIDEOOUTPUT=" -vo что-то "
fi

на предмет используемого по-умолчанию -vo *.

В альте, это по-умолчанию xv
Код
$ grep ^VO ~/mplayer-output.txt
VO: [xv] 480x360 => 1024x768 Planar YV12  [fs] [zoom]

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 6.11.2019, 21:05
Сообщение #22


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

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



Репутация: 1


Цитата(speccyfighter @ 6.11.2019, 18:23) *
Скрипт с этим блоком надо протестировать в арче (перенаправив весь вывод mplayer в файл)
Код
# sed -n '105,118p' /usr/bin/mplayer-vc-copy
# Выбор опция/параметр устройства вывода видео
# для виртуальной консоли или X-теминала
VIDEOOUTPUT=""

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

if [ $DEVOUT = "tty" ]
    then
        setterm --blank 0
        VIDEOOUTPUT=" -vo fbdev2 "
#    else
#        VIDEOOUTPUT=" -vo что-то "
fi

на предмет используемого по-умолчанию -vo *.

В альте, это по-умолчанию xv
Код
$ grep ^VO ~/mplayer-output.txt
VO: [xv] 480x360 => 1024x768 Planar YV12  [fs] [zoom]

С этим блоком выбора VIDEOOUTPUT и со строкой
Код
$ tail -n 1 /usr/bin/mplayer-vc-copy
mplayer -nocache -softvol $VIDEOOUTPUT -xy $XVSIZE -fs -zoom -framedrop "$VIDEOFILE" &>$HOME/mplayer-output.txt

протестировал в альте
Код
$ mplayer-vc-copy ~/Загрузки/clips/Country-video/Trace\ Adkins\ -\ Just\ Fishin\'-IheODRwalEw.mp4

в X-терминале (/dev/pts/*)
Код
$ grep ^VO ~/mplayer-output.txt
VO: [xv] 640x360 => 1365x768 Planar YV12  [fs] [zoom]

и в виртуальной консоли (/dev/tty*)
Код
$ grep ^VO ~/mplayer-output.txt
VO: [fbdev2] 1365x768 => 1365x768 BGRA  [fs] [zoom]

Теперь это же надо посмотреть в арче. На предмет необходимости else с явным указанием -vo в блоке. Или достаточно будет и без оного.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 6.11.2019, 21:48
Сообщение #23


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 5.11.2019, 23:25) *
Проще говоря:
Скрипт mplayer-vc с этим кодом, будет работать в виртуальной консоли, но не будет работать в X-терминале.

Принимаются предложения с "За" и "Нафик". С аргументацией. smile.gif

Код
include/video
    Open=if [ -n "$DISPLAY" ];then mpv %f; else mplayer-vc %f; fi

Юра , это кусок из моих настроек mc, твой скрипт будет запускаться только в чистой консоли.
Причем думаю разницы никакой что в арче, что в альте ( стащил идею по-моему у дебианистов ).
Может просто вставить эту проверку в твой скрипт ?
Сейчас проверю твой способ .
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 6.11.2019, 22:42
Сообщение #24


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Юра, вот vo из mplayer-а играющего из под qterminal :
VO: [xv] 320x240 => 320x240 Planar YV12
не удивляйся разрешению , снимал давно фотиком.

Сообщение отредактировал kostyalamer - 6.11.2019, 22:44
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 7.11.2019, 0:01
Сообщение #25


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

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



Репутация: 1


Цитата(kostyalamer @ 6.11.2019, 20:42) *
Юра, вот vo из mplayer-а играющего из под qterminal :
VO: [xv] 320x240 => 320x240 Planar YV12
не удивляйся разрешению , снимал давно фотиком.


Кость, фиг с ним, с разрешением. Я ещё и не такое тестирую. smile.gif

Погонял скрипт с новым блоком в ледяном.

Получил засаду:
- При попытке выхода из Х-сессии, автоматом с автологином снова заход в 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
сообщение 7.11.2019, 6:49
Сообщение #26


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

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



Репутация: 1


Система на alt-p8-sysv-tde-i586:
Тест в tty и pts пройден.
Скрипт пригоден для сборки rpm пакета.

Последний вариант скрипта стал универсальным для арч и альтов.


Сообщение отредактировал speccyfighter - 7.11.2019, 6:52
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 7.11.2019, 8:28
Сообщение #27


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 7.11.2019, 6:49) *
Система на alt-p8-sysv-tde-i586:
Тест в tty и pts пройден.
Скрипт пригоден для сборки rpm пакета.

Последний вариант скрипта стал универсальным для арч и альтов.

Отлично , если соберешь rpm-ку можно отправить в 8-ую и 9-ую клубную репы ( а если с Антоном договоришься, можно и в официальные ). Потом по аналогии могу сделать пакет для Арча и пушнуть его в Aur .
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 7.11.2019, 19:50
Сообщение #28


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

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



Репутация: 1


Цитата(kostyalamer @ 7.11.2019, 6:28) *
Цитата(speccyfighter @ 7.11.2019, 4:49) *

Система на alt-p8-sysv-tde-i586:
Тест в tty и pts пройден.
Скрипт пригоден для сборки rpm пакета.

Последний вариант скрипта стал универсальным для арч и альтов.

Отлично , если соберешь rpm-ку можно отправить в 8-ую и 9-ую клубную репы ( а если с Антоном договоришься, можно и в официальные ). Потом по аналогии могу сделать пакет для Арча и пушнуть его в Aur .

Угу... sad.gif
Кость, ты ж меня знаешь, если начну докапываться, чтобы довести до релиза, то выгребу всех тараканов.
Как выяснилось, скрипт ещё не готов до статуса публичного релиза, который просто должен работать:

Дайте мне топор, чтобы я этим поттерингопоклонникам-кодописателям руки нахер поотрубал.

Четыре часа бьюсь и не могу понять, какого хера в SL8, скрипт воспроизводит видео в Х-сах, но не воспроизводит в tty, оставляя чёрный экран и шо блин за херня:
Код
$ grep . --text mplayer-output.txt
MPlayer 1.1-5.3.1 (C) 2000-2012 MPlayer Team
192 audio & 401 video codecs
Playing /run/media/altlinux/bfa8b5cb-2e1c-4404-ae62-31f90ee3fcf5/wilder/Загрузки/clips/Country-video/Trace Adkins - Just Fishin'-IheODRwalEw.mp4.
libavformat version 54.6.100 (internal)
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang und
VIDEO:  [H264]  640x360  24bpp  24.000 fps  581.0 kbps (70.9 kbyte/s)
Clip info:
major_brand: mp42
minor_version: 0
compatible_brands: isommp42
creation_time: 2014-03-07 11:47:19
Load subtitles in /run/media/altlinux/bfa8b5cb-2e1c-4404-ae62-31f90ee3fcf5/wilder/Загрузки/clips/Country-video/
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 54.23.100 (internal)
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 2 ch, s16le, 96.0 kbit/6.80% (ratio: 11999->176400)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
Starting playback...
Unsupported PixelFormat 61
Unsupported PixelFormat 81
Unsupported PixelFormat 61
[VD_FFMPEG] Trying pixfmt=0.
Unsupported PixelFormat 61
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
[VD_FFMPEG] Trying pixfmt=1.
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
Unsupported PixelFormat 81
[VD_FFMPEG] Trying pixfmt=2.
Unsupported PixelFormat 81
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
[VD_FFMPEG] Trying pixfmt=3.
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
[swscaler @ 0xef9a40]BICUBIC scaler, from yuv420p to bgra using MMX2
VO: [fbdev2] 1365x768 => 1365x768 BGRA  [fs] [zoom]
A:   0.4 V:   0.2 A-V:  0.175 ct:  0.029   0/  0 98% 14%  0.1% 6 0
Exiting... (Quit)

Код
$ head -n 21 vcs4-output2text.txt
[altlinux<>localhost clips]$ tty                                                                                                                                          
/dev/tty4                                                                                                                                                                
[altlinux<>localhost clips]$                                                                                                                                              
[altlinux<>localhost clips]$ fbset --test                                                                                                                                  
                                                                                                                                                                          
mode "1366x768"                                                                                                                                                          
    geometry 1366 768 1366 768 32                                                                                                                                        
    timings 0 0 0 0 0 0 0                                                                                                                                                
    rgba 8/16,8/8,8/0,0/0                                                                                                                                                
endmode                                                                                                                                                                  
                                                                                                                                                                          
[altlinux<>localhost clips]$                                                                                                                                              
[altlinux<>localhost clips]$ stty -a | grep column                                                                                                                        
speed 38400 baud; rows 48; columns 170; line = 0;                                                                                                                        
[altlinux<>localhost clips]$                                                                                                                                              
[altlinux<>localhost clips]$ ll /dev/fb0                                                                                                                                  
crw-rw----+ 1 altlinux video 29, 0 ноя  7 19:46 /dev/fb0                                                                                                                  
[altlinux<>localhost clips]$                                                                                                                                              
[altlinux<>localhost clips]$ groups                                                                                                                                        
altlinux wheel uucp proc cdwriter audio radio users fuse video netadmin xgrp scanner                                                                                      
[altlinux<>localhost clips]$

Последний выброс, это выброс из tty.
Делается он так:
Код
# fold -w 170 /dev/vcs4 > file.txt

Где:
-w 170 - параметр columns из выброса 'stty -a'
/dev/vcs4 - номер tty из выброса tty без опций, текущего копируемого в файл tty

По исходу четвёртого часа до меня начинает ме-е-дленно доходить:
Гадские поттеринговоды...

Зап*ло начинается с ядерного драйвера, который по-дефолту сажает звуковую карту не в сокет 0, а в сокет 1
Код
$ cat /proc/asound/cards
0 [HDMI           ]: HDA-Intel - HDA Intel HDMI
                      HDA Intel HDMI at 0xc1210000 irq 51
1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xc1214000 irq 50

Код
$ cat /proc/asound/{cards,modules}
0 [HDMI           ]: HDA-Intel - HDA Intel HDMI
                      HDA Intel HDMI at 0xc1210000 irq 51
1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xc1214000 irq 50
0 snd_hda_intel
1 snd_hda_intel

а гадский пульсаудио демон не может разрулить аудиопотоки если поток гонится в tty
Код
$ ls -1 /usr/bin/*pulse*
/usr/bin/pulseaudio
/usr/bin/start-pulseaudio-x11

Зап*ляна в том, что обычному пользователю, для которого и предназначен скрипт mplayer-vc, на эти сокеты и потоки глубоко насрать. А если аудио драйвер посадит карту не в сокет 0, то пульс в tty не разрулит потоки и это приведёт к отказу воспроизведения видео, без вываливания в оболочку, с прерыванием по Esc.

А всю эту фигню с нормальным воспроизведением видео на mplayer-vc в SL8 с пульсой через tty, поймал на этой команде, подобной скриптовой, но с добавлением явно указанного устройства вывода аудио:
Код
$ grep . --text vcs4-output2text-2.txt
[altlinux<>localhost Country-video]$ mplayer -nocache -softvol -vo fbdev2 -xy 1365 -fs -zoom -framedrop -ao pulse::1 ./Trace\ Adkins\ -\ Just\ Fishin\'-IheODRwalEw.mp4

Потому шо по-дефолту у меня, звук гонится через HDMI, который в сокет 0. А мне и в голову не могло придти, что отказ отображения видео мог быть из-за самой популярной линуксовой звуковой подсистемы.

И шо с этой хернёй делать, ума не приложу. Умных мыслей пока нет. Вот такая блин фигня...

Блин, при таком откровенно пофигистском отношении к коду системных компонентов в Линукс, в следующий раз, когда спросят, какой Линукс поставить, скажу Винду.
Шесть часов улетели к чёртовой матери.


Сообщение отредактировал speccyfighter - 7.11.2019, 20:53
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 7.11.2019, 20:37
Сообщение #29


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

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



Репутация: 1


Оттестировал последнюю версию скрипта на этом лайве который с alsa, - это который p9-xfce-sysv с alsa:
Код
$ grep -i '^name\|^vers\|^pretty' /etc/os-release
NAME="starter kit"
VERSION="p9 (Hypericum)"
VERSION_ID=p9
PRETTY_NAME="ALT Starterkit (Hypericum)"

Если карты ядерный драйвер посадил в сокеты неверно,
Код
$ cat /proc/asound/cards
0 [HDMI           ]: HDA-Intel - HDA Intel HDMI
                      HDA Intel HDMI at 0xc1210000 irq 51
1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xc1214000 irq 48

то в Х-сах и tty вывод видео будет отображаться (пользователь в группе video), но просто не будет звука. Который накрайняк можно разрулить не через /etc/modprobe.d/alsa-modindex.conf, а через asoundconf-gtk.
В alt-p9-xfce-sysv и всех делов-то.
Гемора, ну почти ноль же, блин.


Но хрен его знает, кто его наваял этот драйвер,
Код
# modinfo snd_hda_{codec_conexant,codec_hdmi,codec_generic,intel,core} | grep '^file\|^desc\|^lic'
filename:       /lib/modules/4.19.79-std-def-alt1/kernel/sound/pci/hda/snd-hda-codec-conexant.ko.gz
description:    Conexant HD-audio codec
license:        GPL
filename:       /lib/modules/4.19.79-std-def-alt1/kernel/sound/pci/hda/snd-hda-codec-hdmi.ko.gz
description:    HDMI HD-audio codec
license:        GPL
filename:       /lib/modules/4.19.79-std-def-alt1/kernel/sound/pci/hda/snd-hda-codec-generic.ko.gz
description:    Generic HD-audio codec parser
license:        GPL
filename:       /lib/modules/4.19.79-std-def-alt1/kernel/sound/pci/hda/snd-hda-intel.ko.gz
description:    Intel HDA driver
license:        GPL
filename:       /lib/modules/4.19.79-std-def-alt1/kernel/sound/hda/snd-hda-core.ko.gz
license:        GPL
description:    HD-audio bus

который сажает карты не в те сокеты в которые должен:
Код
$ cat /proc/asound/cards
0 [HDMI           ]: HDA-Intel - HDA Intel HDMI
                      HDA Intel HDMI at 0xc1210000 irq 51
1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xc1214000 irq 48


Сообщение отредактировал speccyfighter - 7.11.2019, 21:23
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 7.11.2019, 20:52
Сообщение #30


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Юра, хз чего там в Альте, но в Арче твой скрипт прекрасно работает good.gif Теперь mc через него показывает видео как под X-ами, так и в чистой консоли. Думаю его еще и к ranger-у прикрутить .
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 7.11.2019, 21:17
Сообщение #31


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

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



Репутация: 1


Цитата(kostyalamer @ 7.11.2019, 18:52) *
Юра, хз чего там в Альте, но в Арче твой скрипт прекрасно работает good.gif Теперь mc через него показывает видео как под X-ами, так и в чистой консоли. Думаю его еще и к ranger-у прикрутить .


Ага. Только что ещё раз посмотрел:
У тебя на ледяном, даже при пульсе, в tty гонит и звук и видео. В Х-сах запуск после '# su - arch' видео гонит, но без звука и отказа видео нет.

Не знаю, какой он там Простой, но в этом Симпли, Ж-ж-ж... Короче полный писец.
И шо с этим делать, хрен его знает.
Блин, ну не парсить же всю звуковую с любыми возможными и невозможными вариантами. Это тот ещё подарок. К тому же это костыль. При отказе аудио, отказа по видео не должно быть и всё тут. А пульсовый демон обязан запускаться вне зависимости от того, какой вход у пользователя, Х-совый или без оных. Чтобы звук разруливать вне зависимости от того, вход с Х-сами или без. Это же Линукс, два слоя, а не Винда, у которой кроме гуёв ничего больше нет. Что здесь такого непонятного, чтобы в этом Симпли всплывали такие косяки?


Сообщение отредактировал speccyfighter - 7.11.2019, 21:31
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 8.11.2019, 21:05
Сообщение #32


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

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



Репутация: 1


Потрахался в лайве
Код
$ cat /image/.disk/info
Simply Linux/x86_64 2017-07-07

День убит.

Набросал костылей для правильной работы скрипта mplayer-vc в офигенно Простом Линукс и оттестировал
Код
$ cat mplayer-in-tty-in-alt-with-pulse.txt
mplayer -nocache -softvol -vo fbdev2 -xy 1365 -fs -zoom -framedrop -ao pulse /home/altlinux/Trace Adkins - Just Fishin'-IheODRwalEw.mp4

AUDIOOUTPUT=""; PULSEENABLE=`ls -1 /usr/bin/pulse* | wc -l`; \
if [ $PULSEENABLE != 0 ]; then AUDIOOUTPUT="-ao pulse"; else AUDIOOUTPUT="-ao alsa"; fi

AUDIOOUTPUT=""; PULSEENABLE=`ls -1 /usr/bin/pulse* | wc -l`; \
if [ $PULSEENABLE != 0 ]; then AUDIOOUTPUT="-ao pulse"; else AUDIOOUTPUT="-ao alsa"; fi; \
mplayer -nocache -softvol -vo fbdev2 -xy 1365 -fs -zoom -framedrop $AUDIOOUTPUT ./Trace\ Adkins\ -\ Just\ Fishin-IheODRwalEw.mp4


Теперь заключительная часть скрипта mplayer-vc будет выглядеть так
Код
# tail -n 15 /usr/bin/mplayer-vc-copy-3

# Опция/параметр выбора драйвера вывода аудио
AUDIOOUTPUT=""
PULSEENABLE=`ls -1 /usr/bin/pulse* | wc -l`
if [ $PULSEENABLE != 0 ]
    then
    AUDIOOUTPUT="-ao pulse"
    else
    AUDIOOUTPUT="-ao alsa"
fi


# пропорционально масштабировать по коэффициенту
# до X фреймбуфера, - в переменной XVSIZE
mplayer -nocache -softvol $VIDEOOUTPUT -xy $XVSIZE -fs -zoom -framedrop $AUDIOOUTPUT "$VIDEOFILE" &>$HOME/mplayer-output.txt


Осталась совсем херня, - всё это собрать до кучи и протестировать в:
- IceArch
- alt-p8-sysv-tde
- alt-p9-xfce-sysv

И чтобы никаких, блин, сбоев, поломок и прочей хрени.
Да, и не забыть поправить help, добавив в него предупреждение, что для воспроизведения видео в виртуальной консоли, пользователь должен находиться в группе video.

Потому шо в Линупсе,
Код
# grep 50[0,1] /etc/group
altlinux:x:500:
tester:x:501:

кто первым встал,
Код
# who
altlinux :0           2019-11-08 21:56 (:0)
altlinux pts/0        2019-11-08 21:57 (:0.0)
altlinux pts/1        2019-11-08 21:57 (:0.0)
altlinux pts/2        2019-11-08 21:57 (:0.0)
root     pts/1        2019-11-08 21:57 (localhost)
tester   tty2         2019-11-08 22:43 (localhost)

того и тапки
Код
# ls -l /dev/fb*
crw-rw----+ 1 altlinux video 29, 0 ноя  8 21:56 /dev/fb0


Не врубился, почему в лайве Простого Линукс, man bash выдаёт No manual entry for bash.
Пока ходил в магазин за продуктами, уснул порт из-за грёбаного ядерного usbcore. Кардридер с картой уснул и чуть не потерял наработки скриптов. Команды сброса резервом набивал вслепую. А костыль пакетом disable-usb-autosuspend, который написал за год до сборки образа Простого Линукс, в его образе вообще хер лежит.
А когда вся эта херня уснула, получил заставку на гуях:
Сессия заблокирована
Вы будете перенаправлены на диалог
разблокировки автоматически в
течение нескольких секунд

Само-собой эти секунды превратились в вечность. Хорошо, блин, хоть tty был открыт рутом. Иначе бы скрипты накрылись медным тазом.
Писец какой-то...

Сообщение отредактировал speccyfighter - 8.11.2019, 22:24
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 8.11.2019, 22:16
Сообщение #33


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Да, не слабо , жуть какая то. Видимо простой линукс становится совсем простым . Мне кажется что kda гораздо лучше его
тестировал , чем это делают теперь . Хотя боюсь что проблемы общеальтовские, если вообще не общесистемные.
Твой предыдущий вариант скрипта прекрасно работает в Ледяном.
Как будет готов следующий вариант , скинь полный листинг - обязательно протестирую и запихаю в новую версию.
Вообще, отличный скрипт , я его уже и к ranger-у прикрутил и в X-сах и в консоли , красота smile.gif
Как все устаканится, надо будет запихать его в Aur , очень полезная вещь !
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 8.11.2019, 22:36
Сообщение #34


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

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



Репутация: 1


Цитата(kostyalamer @ 8.11.2019, 20:16) *
Да, не слабо , жуть какая то. Видимо простой линукс становится совсем простым . Мне кажется что kda гораздо лучше его
тестировал , чем это делают теперь . Хотя боюсь что проблемы общеальтовские, если вообще не общесистемные.

Говна везде хватает:
Это и usbcore с включенным Power Management по умолчанию для usb. (Вот нахер?!)
Это и ядерный драйвер звука, который на некоторых архитектурах рассаживает карты не в те сокеты в какие должен. Из-за чего благополучно сломан правильный дефолт.
И хуже всего то, что в Линукс на всё это поклали болт.

Цитата(kostyalamer @ 8.11.2019, 20:16) *
Твой предыдущий вариант скрипта прекрасно работает в Ледяном.
Как будет готов следующий вариант , скинь полный листинг - обязательно протестирую и запихаю в новую версию.
Вообще, отличный скрипт , я его уже и к ranger-у прикрутил и в X-сах и в консоли , красота smile.gif
Как все устаканится, надо будет запихать его в Aur , очень полезная вещь !

Сделаю. Но наверняка не завтра. Завтра-послезавтра уйдёт на тест: говно на выходе гнать нехорошо. И экс-спектрумистам это не пристало. smile.gif

Сообщение отредактировал speccyfighter - 8.11.2019, 22:36
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 8.11.2019, 22:56
Сообщение #35


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

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



Репутация: 1


Цитата(kostyalamer @ 8.11.2019, 20:16) *
надо будет запихать его в Aur , очень полезная вещь !

Надо будет тогда и комментарии на английский перевести. Но смогу только через гугл-транслятор. Если их совсем убрать, это кому-нибудь может сломать мозг. А они разъясняют назначение и кратко алгоритм каждого блока скрипта.
Если лицензия GPL мешает, скрипт можно перевести и на public domain. Тут в принципе и не против.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 8.11.2019, 23:29
Сообщение #36


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 8.11.2019, 22:56) *
Надо будет тогда и комментарии на английский перевести. Но смогу только через гугл-транслятор. Если их совсем убрать, это кому-нибудь может сломать мозг. А они разъясняют назначение и кратко алгоритм каждого блока скрипта.
Если лицензия GPL мешает, скрипт можно перевести и на public domain. Тут в принципе и не против.

Гугл более менее нормально переводит, я думаю сойдет.
С GPL - ом все нормально, никаких проблем . У меня все пакеты в Aur-е под GPL - ом :
https://aur.archlinux.org/packages/?K=kostyalamer&SeB=m
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 8.11.2019, 23:37
Сообщение #37


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

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



Репутация: 1


Хорошо. Так и порешили. Как доведу шэлл-код до ума (по крайней мере как думаю и надеюсь: нэ кажы гоп, покы нэ побачыш куды встрыбнэш), тогда выложу целиком.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 9.11.2019, 2:32
Сообщение #38


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

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



Репутация: 1


Скрипт mplayer-vc переведён, исправлен и готов в тестовой версии mplayer-vc-copy-4.
Скрипт прошёл тест на лайве alt-p9-xfce-sysv-20191020-x86_64.iso (alsa)

Следующее тестирование на:
- лайве IceArch-0.985-x86_64.iso (pulse)
- установленной alt-p8-sysv-tde (alsa)
- лайве alt-simply-8.2.0-x86_64.iso (pulse)

Отличия от версии mplayer-vc-0.2.1-alt1.i686.rpm:
- Переведены на англиийский комментарии.
- В help добавлено упоминание о необходимости наличия пользователя в группе video и необходимости переиндексации звуковых карт в системах с alsa, если карта не в сокет 0. А также подсказка при неверном указании опции вывода help.
- Добавлено автоопределение необходимых драйверов для вывода видео и аудио.

Целевое назначение скрипта:
Максимальное упрощение воспроизведения локального видео в виртуальной консоли.


Сообщение отредактировал speccyfighter - 9.11.2019, 2:51
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 11.11.2019, 8:10
Сообщение #39


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

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



Репутация: 1


Завершающий этап тестирования в p8-sysv-tde и p9-xfce-sysv

Масса эпитетов... И все матом:
https://forum.altlinux.org/index.php?topic=...43700#msg343700
https://forum.altlinux.org/index.php?topic=...43701#msg343701

Кратко:
Отказ в доступе к фреймбуферу для непревилегированного находящегося в группе video.
Соответственно и отказ отображения видео в его сессии(ях).

Исправление приведено во второй ссылке.
Но у меня такой ехидный вопрос:
Ну и как эту хрень теперь объяснять простому пользователю, который только-то и кино в консоли собрался посмотреть. Через упрощающий скрипт, который именно для него, обычного пользователя и предназначен. Не вынося ему мозг мешком опций. Через скрипт, следующий принципу KISS.

ХренА себе KISS... Ну и шо теперь делать?..
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 11.11.2019, 8:29
Сообщение #40


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 11.11.2019, 8:10) *
ХренА себе KISS... Ну и шо теперь делать?..

Да , как сказал Серега
Цитата
Другими словами, ничего нового: всё по-старому.

Что в переводе с культурного на русский означает " Ничего нового , все через ж... "
Проблемы с VB я вообще не понял, у меня в Арче Virtual Box прекрасно работает unknw.gif
Как вариант , можно опакетить твой скрипт для Арча как есть, а для Альта пихать разные костыли.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 11.11.2019, 10:21
Сообщение #41


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

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



Репутация: 1


Было "хорошо", стало "ещё лучше":
https://forum.altlinux.org/index.php?topic=...43704#msg343704
https://forum.altlinux.org/index.php?topic=...43705#msg343705

Лучше б я под виндой сидел, а не выбрасывал больше 15-ти лет на вот это вот...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 11.11.2019, 10:44
Сообщение #42


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

Группа: Пользователь
Сообщений: 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
сообщение 12.11.2019, 0:38
Сообщение #43


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

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



Репутация: 1


Цитата(kostyalamer @ 11.11.2019, 6:29) *
Как вариант , можно опакетить твой скрипт для Арча как есть, а для Альта пихать разные костыли.


Угу... Там же права с рутовым доступом.
Единственный костыль, который туда можно засунуть, это вот эту вот херню в preinstall или postinstall, - т.е. правку через sed
Код
# grep ' <fb> ' /etc/security/console.perms.d/50-default.perms.probe
<console>  0600 <fb>         0600 root

Код
# sed -i 's/0600 <fb>         0600 root/0660 <fb>         0660 root.video/' /etc/security/console.perms.d/50-default.perms.probe

Код
# grep ' <fb> ' /etc/security/console.perms.d/50-default.perms.probe
<console>  0660 <fb>         0660 root.video

и пакет будет называться mplayer-vc-bullshit-0.3-alt0.1-noarch.rpm
А комментарием к postinstall добавить в спэке: Fac*ing bullshit
Иначе без этого херового говна, для других пользователей в альте не заработает. Ибо распределение доступа по группе, в альте на sysv нахер поломано, неверным конфигурированием прав доступа к фреймбуферу. А в альте с systemd, на права доступа по группе, вообще кладётся болт. И каждый залогинившийся урод, может читать и писать во фреймбуфер. Хера себе безопасность...


Сообщение отредактировал speccyfighter - 12.11.2019, 0:43
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 12.11.2019, 8:51
Сообщение #44


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Тогда так наверное и сделаем в Арче будет mplayer-mc , а в Альте mplayer-vc-bullshit
Давай пока с зависимостями для арча определимся что в нем писать :
mplayer
что еще ?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 13.11.2019, 3:46
Сообщение #45


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

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



Репутация: 1


Цитата(kostyalamer @ 12.11.2019, 6:51) *
Давай пока с зависимостями для арча определимся что в нем писать :
mplayer
что еще ?

Зависимости mplayer-vc в archlinux
Код
root<>archiso:~/# pacman -F /usr/bin/echo                                                                                            
usr/bin/echo принадлежит core/coreutils 8.31-2                                                                                          
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/grep                                                                                                
usr/bin/grep принадлежит core/grep 3.3-2                                                                                                
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/awk                                                                                                
usr/bin/awk принадлежит core/gawk 5.0.1-1                                                                                              
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/bc                                                                                                  
usr/bin/bc принадлежит extra/bc 1.07.1-3                                                                                                
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/sed                                                                                                
usr/bin/sed принадлежит core/sed 4.7-2                                                                                                  
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/fbset                                                                                              
usr/bin/fbset принадлежит community/fbset 2.1-6                                                                                        
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/tty                                                                                                
usr/bin/tty принадлежит core/coreutils 8.31-2                                                                                          
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/setterm                                                                                            
usr/bin/setterm принадлежит core/util-linux 2.34-3                                                                                      
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/cut                                                                                                
usr/bin/cut принадлежит core/coreutils 8.31-2                                                                                          
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/head                                                                                                
usr/bin/head принадлежит core/coreutils 8.31-2                                                                                          
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/mediainfo                                                                                          
usr/bin/mediainfo принадлежит community/mediainfo 19.09-1                                                                              
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /usr/bin/mplayer                                                                                            
usr/bin/mplayer принадлежит extra/mplayer 38139-2                                                                                      
root<>archiso:~/#                                                                                                                        
root<>archiso:~/# pacman -F /etc/group                                                                                                  
etc/group принадлежит core/filesystem 2019.10-1


Цитата(kostyalamer @ 12.11.2019, 6:51) *
а в Альте mplayer-vc-bullshit

Погодю пока. Посмотрим куда меня в альтах пошлют с багрепортом на pam0_console.
Там надо будет для мейнтейнера подробно и понятно изложить суть, а подготовить такой багрепорт, не так быстро как хотелось бы.
Ну а если уже пошлют в багрепорте, тогда надо готовить mplayer-vc-bullshit для альтов с костылём в виде
Код
sed -i 's/0600 <fb>         0600 root/0660 <fb>         0660 root\.video/' /etc/security/console.perms.d/50-default.perms


У меня тут идея проснулась на предмет mplayer-vc-bullshit для альтов.
На попытке запустить mplayer-vc-bullshit без параметров:
Слышится издевательский смех и появляется издевательская рожа в ascii графике.
Затем это исчезает, вверху появляется надпись Welcome to mplayer-vc-bullshit for altlinux.
А ниже пояснение, что чтобы эта херня работала нормально, просьба ввести команду от root:
Код
sed -i 's/0600 <fb>         0600 root/0660 <fb>         0660 root\.video/' /etc/security/console.perms.d/50-default.perms

По истечении 5 секунд, ниже появляется на английском надпись "Прочитал?". И вслед за ней снова идиотский смех как у чёртика из табакерки.

Сообщение отредактировал speccyfighter - 13.11.2019, 3:51
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 13.11.2019, 4:34
Сообщение #46


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

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



Репутация: 1


Цитата(kostyalamer @ 12.11.2019, 6:51) *
Давай пока с зависимостями для арча

Кстати увидел что тут
Поиск_пакета_по_названию_файла
команда приведена неправильная:
Код
root<>archiso:~/# pacman -Fs pacman                                                                                                      
ошибка: недопустимый параметр '-s'

Правильно в англоязычной вики:
Search_for_a_package_that_contains_a_specific_file
Код
root<>archiso:~/# pacman -F pacman                                                                                                      
core/pacman 5.2.1-1 (base base-devel) [установлен]                                                                                      
    usr/bin/pacman                                                                                                                      
    usr/share/bash-completion/completions/pacman                                                                                        
extra/xscreensaver 5.43-1                                                                                                              
    usr/lib/xscreensaver/pacman                                                                                                        
archlinuxcn/xscreensaver-arch-logo 5.43-1                                                                                              
    usr/lib/xscreensaver/pacman


Сообщение отредактировал speccyfighter - 13.11.2019, 4:45
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 13.11.2019, 8:22
Сообщение #47


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 13.11.2019, 3:46) *
У меня тут идея проснулась на предмет mplayer-vc-bullshit для альтов.
На попытке запустить mplayer-vc-bullshit без параметров:
Слышится издевательский смех и появляется издевательская рожа в ascii графике.
Затем это исчезает, вверху появляется надпись Welcome to mplayer-vc-bullshit for altlinux.
А ниже пояснение, что чтобы эта херня работала нормально, просьба ввести команду от root:
Код
sed -i 's/0600 <fb>         0600 root/0660 <fb>         0660 root\.video/' /etc/security/console.perms.d/50-default.perms

По истечении 5 секунд, ниже появляется на английском надпись "Прочитал?". И вслед за ней снова идиотский смех как у чёртика из табакерки.

Супер good.gif

Сообщение отредактировал kostyalamer - 13.11.2019, 8:23
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 13.11.2019, 23:30
Сообщение #48


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Юра , вот пакет : https://yadi.sk/d/wpOpaxqCL9j4dg
а вот PKGBUILD к нему : https://yadi.sk/d/YTquzKWd9dwGAQ
Архив с твоим скриптом лежит на клубном хостинге.
Пакет проверил - работает. Скачиваешь его и устанавливаешь прямо из папки через sudo pakman -U его_имя
собрать и установить под пользователем
скачиваешь PKGBUILD в этой же папке делаешь makepkg -i
Посмотри PKGBUILD если все устраивает , пушну его в Aur
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 14.11.2019, 7:11
Сообщение #49


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

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



Репутация: 1


Цитата(kostyalamer @ 13.11.2019, 21:30) *
Юра , вот пакет : https://yadi.sk/d/wpOpaxqCL9j4dg
Пакет проверил - работает. Скачиваешь его и устанавливаешь прямо из папки через sudo pakman -U его_имя


Собственно сами тесты прошли.
Последовательность подготовки и тестирования в лайве IceArch через QTerminal:
Код
# Запуск QTerminal

Код
root<>archiso:~/# mv /usr/local/bin/mplayer-vc /usr/local/bin/mplayer-vc.bak

Код
root<>archiso:~/# pacman -Sy

Код
root<>archiso:~/# pacman -U mplayer-vc-1.0-1-x86_64.pkg.tar.xz

Код
root<>archiso:~/# useradd -Um test

Код
root<>archiso:~/# passwd test

Код
root<>archiso:~/# gpasswd -a test video

Код
root<>archiso:~/# gpasswd -a test audio

Код
root<>archiso:~/# su - test

Код
[test<>archiso ~]$ $ pulseaudio --daemonize=no &

Код
[test<>archiso ~]$ $ export DISPLAY=":0"

Код
[test<>archiso ~]$ tty
/dev/pts/3

Код
[test<>archiso ~]$ mplayer-vc ./Trace\ Adkins\ -\ Just\ Fishin\'-IheODRwalEw.mp4 # тест

Код
[test<>archiso ~]$ jobs
[1]+  Запущен          pulseaudio --daemonize=no &
[test<>archiso ~]$ fg 1
pulseaudio --daemonize=no
^C[test<>archiso ~]$ jobs
[test<>archiso ~]$

Тест в tty от пользователя, как обычно. С добавлением пользователя в группы video и audio, перед его логином в tty.

Цитата(kostyalamer @ 13.11.2019, 21:30) *
Архив с твоим скриптом лежит на клубном хостинге.

В смылсле в теме на форуме?

Цитата(kostyalamer @ 13.11.2019, 21:30) *
собрать и установить под пользователем
скачиваешь PKGBUILD в этой же папке делаешь makepkg -i

Не, не собирал. Только оттестировал твой готовый пакет.
К тому же в твоём лайве нельзя выйти в dm с логином пользователя (из-за автологина в X root), а систем на systemd на моих винчестерах никогда не было.

Цитата(kostyalamer @ 13.11.2019, 21:30) *
а вот PKGBUILD к нему : https://yadi.sk/d/YTquzKWd9dwGAQ
Посмотри PKGBUILD если все устраивает , пушну его в Aur

Только версию смени с 1.0 на 0.3.0
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 14.11.2019, 8:06
Сообщение #50


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Нет исходники лежат тут : http://altlinuxclub.ru/arhiv/ (но хитрый хостинг туда просто так не пускает, только по готовым ссылкам) как и остальные исходники моих арчевских пакетов.
Вечером поменяю версию.
PS если захочешь собрать пакет для слаки или дивана , клубный хостинг всегда в твоем распоряжении smile.gif

Сообщение отредактировал kostyalamer - 14.11.2019, 8:08
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 14.11.2019, 23:58
Сообщение #51


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Юра, твой скрипт в Aur-е : https://aur.archlinux.org/packages/mplayer-vc
В ледяном можешь установить прямо из live через pamac-manager ( иконка в трее icewm ).
В нем надо в настройках включить поддержку Aur после чего найти пакет ( лупа в левом углу ) и собрать его.
Проверено , работает.
После сегодняшнего глобального обновления у меня стал глючить pacaur , пришлось поставить старый добрый йогурт
(yaourt) он устанавливает твой скрипт без каких либо проблем.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 15.11.2019, 17:07
Сообщение #52


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


В связи с недавно изменившимся стандартом : https://archlinux.org.ru/forum/topic/19525/?page=1 подправил PKGBUILD , перезалил , теперь при сборке не ругается . Добавил пакет в ледяной , все работает.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 16.11.2019, 1:33
Сообщение #53


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

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



Репутация: 1


Цитата(kostyalamer @ 15.11.2019, 15:07) *
В связи с недавно изменившимся стандартом : https://archlinux.org.ru/forum/topic/19525/?page=1 подправил PKGBUILD , перезалил , теперь при сборке не ругается . Добавил пакет в ледяной , все работает.

Отлично. Спасибо Костя.

Значит остался багрепорт с этой ж0пой в альте (проявится на sysv, но не в systemd), в которой похрен указание группы, прав на которую в системе не существует:
Код
$ ls -l /dev/fb*
crw------- 1 altlinux video 29, 0 ноя 15 19:12 /dev/fb0

Но объём выбросов для багрепорта, меня пугает.
Ибо смотреть и/или давать выбросы в багрепорт, надо как минимум в IceArch (Arch), devuan и наверное желательно slackware-current, а это только из полной сборки куда входит devel-набор. В последнем случае, возможности мои не бесконечны и возможно придётся ограничиться IceArch и Devuan. На предмет разруливания прав для фреймбуфера, которые в альтах на sysv сломаны.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 24.11.2019, 0:39
Сообщение #54


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

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



Репутация: 1


Масса полезнейшего инфо по bash (для mplayer-vc)

Bash Reference Manual
http://www.gnu.org/software/bash/manual/bash.html

Advanced Bash-Scripting Guide
https://www.opennet.ru/docs/RUS/bash_scripting_guide/

Краткий учебник по sed.
https://emulek.github.io/sed/index.html
Глава 7. Примеры из info sed.
(sed и процедуры)
https://emulek.github.io/sed/ch07.html

Работа со строками в bash
https://webhamster.ru/mytetrashare/index/mtb0/1516

How do you take a suffix of a string in bash using negative offsets?
https://stackoverflow.com/questions/3147660...egative-offsets

In bash, how can I check if a string begins with some value?
https://stackoverflow.com/questions/2172352...with-some-value

Bash String Manipulation Examples – Length, Substring, Find and Replace
https://www.thegeekstuff.com/2010/07/bash-s...g-manipulation/

Grabbing the first [x] characters for a string from a pipe
https://unix.stackexchange.com/questions/34...ing-from-a-pipe

How to extract the first two characters of a string in shell scripting?
https://stackoverflow.com/questions/1405611...shell-scripting

How to get the last character of a string in a shell?
https://stackoverflow.com/questions/1754289...ring-in-a-shell

Delete the last character of a string using string manipulation in shell script
https://unix.stackexchange.com/questions/14...l-script/144345


Запросы:
вывод последнего символа в строке bash
parsing 1st symbols of string bash
parsing last symbols of string bash
$* $? $@ $# bash

Сообщение отредактировал speccyfighter - 24.11.2019, 0:40
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 24.11.2019, 12:24
Сообщение #55


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

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



Репутация: 1


Обработчик указанного пути для mplayer-vc:
Код
$ cat ./mplayer-vc-N02
#!/bin/bash

# Каждый путь - слово ($@), для пути ../* : "каталог медиафайл каталог"
# Если файл Media, - вывести на stdout (проиграть)
# Каталоги и не Media пропустить

# Парсить параметр скрипта: ../* или ../file.mp4
for vfile in "$@"
      do
         # Пропустить каталог (шоб mediainfo не вис на каталоге)
         typefile=`file -b "$vfile"`
         if [[ $typefile != "directory" ]]
            then
                 # Если тип файла Video, то проиграть
                 mediayes=`mediainfo "$vfile" | grep ^Video$ | wc -w`
                 if [ "$mediayes" == 1 ]
                     then
                         echo "$vfile"
                 fi
         fi
done

Для путей:
../file.mp4 - проиграть файл
../* - проиграть видео файлы в каталоге.

Отключить субтитры:
-noautosub - внешние субтитры
-nosub
Валится на внешних субтитрах:
Код
VO: [xv] 848x480 => 320x180 Planar YV12
A:  35.9 V:  35.9 A-V: -0.000 ct: -0.057   0/  0  9%  1%  1.1% 0 0 61%

Subtitle word '񼠲孼' too long!

Добавить явно -vo xv если не tty (неизвестен дефолт и наличие автоопределения)

Ввести паузу в 3 секунды между клипами.

Бесконечный цикл для ../* или ./*.mp4:
Код
while true; do date +%Y%m%d-%T > current-datetime.txt; sleep 1; done



Сообщение отредактировал speccyfighter - 24.11.2019, 20:16
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
YYY
сообщение 24.11.2019, 16:43
Сообщение #56


Профессионал
*******

Группа: Активный Пользователь
Сообщений: 1669
Регистрация: 12.10.2010
Вставить ник
Цитата
Пользователь №: 1950
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 8


Цитата(speccyfighter @ 24.11.2019, 12:24) *
../* - проиграть видео файлы в каталоге.


тогда еще надо рандом и возможность зациклить - типа клипы или песенки по кругу smile.gif))
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 25.11.2019, 0:23
Сообщение #57


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

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



Репутация: 1


Код
$ cat mplayer-vc-N02--single-or-many
# One or several files selector


# Если аргумент один, то
if [ "$#" == 1 ]
     then
            # если файл это не каталог, то
            vfile="$@"
            typefile=`file -b "$vfile"`
            if [[ $typefile != "directory" ]]
                then
                    # если тип файла Video, то проиграть
                    mediayes=`mediainfo "$vfile" | grep ^Video$ | wc -w`
                    if [ $mediayes == 1 ]
                        then
                            # Проиграть с подстановкой переменных выше
                            # http://forum.russ2.com/index.php?showtopic=4431&view=findpost&p=51470
                            mplayer -nocache -softvol -noautosub    -xy 1365 -fs -zoom -framedrop -ao alsa "$vfile" &>/dev/null
                            exit 0
                        else
                            echo -e "\nЭто не видео файл\n"
                            exit 0
                    fi

                elif [[ $typefile == "directory" ]]
                        then
                            echo -e "\nЭто каталог\n"
                            exit 0
            fi

     else

            if [ "$#" > 1 ]
                then

                    echo "бесконечный цикл нескольких видео"
                    # http://forum.russ2.com/index.php?showtopic=4431&view=findpost&p=51512
            fi

fi

Теперь надо, поправить хэлп, ввести паузу, обнулить переменную VIDEOFILE (а надо?), переменные сводить воедино и лепить скрипты до кучи. С завершением на тесте с моделированием ошибок. На предмет мало-мальской "защиты от дурака".
"защита от дурака" - это не оскорбление. Это термин на платформе ZX Spectrum, означающий защиту от непрогнозируемых действий пользователя.

В финальном скрипте будет:
- Проигрывание в полный экран одного видеофайла с завершением проигрывания.
- Проигрывание в полный экран нескольких видеофайлов по маске бесконечным циклом.

В финальном скрипте не будет:
- Мана не будет, ибо всё просто, автоматика где возможно, и нафик ман не нужен. Разве что м.б.(?) кратко в хэлп о хоткеях (перемотка, громкость, останов, пауза, время, мьют). Всё как во времена бородатого программирования, kiss в чистом виде. Без выносов мозга в шелл. (Но и без проверок никак: на непустых подкаталогах, mediainfo впадает в анабиоз, ибо ему и в голову не приходит, что ему могут подсунуть не файл, а подкаталог, да ещё и непустой, из-за чего он бывает в глубоком трансе)
- Рандома списка не будет. Ибо работает через интерпретатор, скрипт пухнет, проверки дофига тактов занимают, а планировалось чтобы это работало на всяком говне с фееричным даунгрейдом железа. Насколько это только сегодня возможно.
- Основная и главная цель скрипта: максимальное упрощение типовой задачи в шелл, - проигрывание видео в консоли. (без езды по ушам, что шелл только для админов)


Сообщение отредактировал speccyfighter - 25.11.2019, 1:56
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 25.11.2019, 9:34
Сообщение #58


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


Цитата(kostyalamer @ 7.11.2019, 20:52) *
Юра, хз чего там в Альте, но в Арче твой скрипт прекрасно работает good.gif Теперь mc через него показывает видео как под X-ами, так и в чистой консоли. Думаю его еще и к ranger-у прикрутить .

biggrin.gif и в Links2 - "и там и там" - нормально (правда под мультиплексорами вроде не взлетает).
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 25.11.2019, 22:10
Сообщение #59


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(knn @ 25.11.2019, 9:34) *
biggrin.gif и в Links2 - "и там и там" - нормально (правда под мультиплексорами вроде не взлетает).

Мультиплексоры тоже работают через фреймбуфер, потому и не взлетает.
PS Юра, когда будет готова очередная версия - выложи ее целиком , я перепакечу в Aur и обновлю в ледяном.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 27.11.2019, 7:36
Сообщение #60


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

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



Репутация: 1


Число, это математическая величина и пишется она без пробела, ленупсовый урод
Код
$ mediainfo /home/tos-1720x720-cfg01.mkv | grep Width
Width                                    : 1 720 pixels


А из-за твоей ленупсовой тупости надо лепить километры г*на любым из вариантов, да ещё через реверс, чтобы получить математическую величину, а не хрень на палочке:
Код
$ mediainfo /home/tos-1720x720-cfg01.mkv | grep Width | cut -f 2 -d ':' | rev | cut -f 2- -d ' ' | rev | sed 's/ //g'
1720

Код
$ mediainfo /home/tos-1720x720-cfg01.mkv | grep Width | rev | awk '{$1=""; print $0 }' | rev | awk -F ':' '{print $2}' | sed 's/ //g'
1720

Потому шо эта фигня должна уйти в переменную.
Тебе же тупому невдомёк, что сейчас разрешения под тысяч пять. Попробуй их распарси из твоего выброса говна с пробелами.
Бестолочь блин...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 27.11.2019, 9:40
Сообщение #61


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

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



Репутация: 1


Похоже есть способ получше чем mediainfo:
Идентификация видеофайла(ов)

Видеофайлы
Код
$ mplayer -identify -vo null -ao null -frames 0 /home/tos-1720x720-cfg01.mkv | sed -n 's/^ID_//p'
VIDEO_ID=0
AUDIO_ID=0
AID_0_LANG=eng
SUBTITLE_ID=0
SID_0_LANG=hrv
SUBTITLE_ID=1
SID_1_LANG=cze
SUBTITLE_ID=2
SID_2_LANG=dan
SUBTITLE_ID=3
SID_3_LANG=ger
SUBTITLE_ID=4
SID_4_LANG=eng
SUBTITLE_ID=5
SID_5_LANG=spa
SUBTITLE_ID=6
SID_6_LANG=fre
SUBTITLE_ID=7
SID_7_LANG=gre
SUBTITLE_ID=8
SID_8_LANG=heb
SUBTITLE_ID=9
SID_9_LANG=hun
SUBTITLE_ID=10
SID_10_LANG=ind
SUBTITLE_ID=11
SID_11_LANG=ita
SUBTITLE_ID=12
SID_12_LANG=jpn
SUBTITLE_ID=13
SID_13_LANG=dut
SUBTITLE_ID=14
SID_14_LANG=nor
SUBTITLE_ID=15
SID_15_LANG=per
SUBTITLE_ID=16
SID_16_LANG=pol
SUBTITLE_ID=17
SID_17_LANG=por
SUBTITLE_ID=18
SID_18_LANG=rus
SUBTITLE_ID=19
SID_19_LANG=chi
VIDEO_CODEC=ffhevc
CLIP_INFO_NAME0=encoder
CLIP_INFO_VALUE0=libebml v1.3.0 + libmatroska v1.4.1
CLIP_INFO_NAME1=creation_time
CLIP_INFO_VALUE1=2014-03-18T13:19:29.000000Z
CLIP_INFO_N=2
FILENAME=/home/tos-1720x720-cfg01.mkv
DEMUXER=lavfpref
VIDEO_FORMAT=HEVC
VIDEO_BITRATE=0
VIDEO_WIDTH=1720
VIDEO_HEIGHT=720
VIDEO_FPS=24.000
VIDEO_ASPECT=0.0000
AUDIO_FORMAT=8192
AUDIO_BITRATE=448000
AUDIO_RATE=48000
AUDIO_NCH=6
START_TIME=0.00
LENGTH=734.17
SEEKABLE=1
CHAPTERS=0
[ac3 @ 0x7ff28f7c9260]Channel layout '5.1(side)' with 6 channels does not match specified number of channels 2: ignoring specified channel layout
AUDIO_BITRATE=448000
AUDIO_RATE=48000
AUDIO_NCH=2
AUDIO_CODEC=ffac3
EXIT=EOF

Код
$ mplayer -identify -vo null -ao null -frames 0 /home/Trace\ Adkins\ -\ Just\ Fishin\'.mp4 | sed -n 's/^ID_//p'
VIDEO_ID=0
AUDIO_ID=0
VIDEO_CODEC=ffh264
CLIP_INFO_NAME0=major_brand
CLIP_INFO_VALUE0=mp42
CLIP_INFO_NAME1=minor_version
CLIP_INFO_VALUE1=0
CLIP_INFO_NAME2=compatible_brands
CLIP_INFO_VALUE2=isommp42
CLIP_INFO_NAME3=creation_time
CLIP_INFO_VALUE3=2014-03-07T11:47:19.000000Z
CLIP_INFO_N=4
FILENAME=/home/Trace Adkins - Just Fishin'.mp4
DEMUXER=lavfpref
VIDEO_FORMAT=H264
VIDEO_BITRATE=581008
VIDEO_WIDTH=640
VIDEO_HEIGHT=360
VIDEO_FPS=24.000
VIDEO_ASPECT=0.0000
AUDIO_FORMAT=MP4A
AUDIO_BITRATE=95992
AUDIO_RATE=44100
AUDIO_NCH=2
START_TIME=0.00
LENGTH=210.05
SEEKABLE=1
CHAPTERS=0
AUDIO_BITRATE=95992
AUDIO_RATE=44100
AUDIO_NCH=2
AUDIO_CODEC=ffaac
EXIT=EOF

Код
$ mplayer -identify -vo null -ao null -frames 0 ./avi4test.avi | sed -n 's/^ID_//p'
VIDEO_ID=0
AUDIO_ID=1
VIDEO_CODEC=ffh264
CLIP_INFO_NAME0=Software
CLIP_INFO_VALUE0=Lavf56.25.101
CLIP_INFO_N=1
FILENAME=./avi4test.avi
DEMUXER=avi
VIDEO_FORMAT=H264
VIDEO_BITRATE=293032
VIDEO_WIDTH=640
VIDEO_HEIGHT=360
VIDEO_FPS=59.940
VIDEO_ASPECT=0.0000
AUDIO_FORMAT=255
AUDIO_BITRATE=95992
AUDIO_RATE=0
AUDIO_NCH=0
START_TIME=0.00
LENGTH=790.72
SEEKABLE=1
CHAPTERS=0
AUDIO_BITRATE=95992
AUDIO_RATE=44100
AUDIO_NCH=2
AUDIO_CODEC=ffaac
EXIT=EOF


ASCII файл
Код
$ mplayer -identify -vo null -ao null -frames 0 /home/abcde.txt | sed -n 's/^ID_//p'
VIDEO_ID=0
VIDEO_CODEC=ffansi
SUB: Could not determine file format
Cannot load subtitles '/home/abcde.txt'.
FILENAME=/home/abcde.txt
DEMUXER=lavf
VIDEO_FORMAT=TXT4
VIDEO_BITRATE=0
VIDEO_WIDTH=640
VIDEO_HEIGHT=400
VIDEO_FPS=25.000
VIDEO_ASPECT=0.0000
START_TIME=0.00
LENGTH=0.04
SEEKABLE=1
CHAPTERS=0
EXIT=EOF


Каталог
Код
$ mplayer -identify -vo null -ao null -frames 0 /home/tester | sed -n 's/^ID_//p'
File not found: '/home/tester'
Failed to open /home/tester.
EXIT=EOF


Сходство/различие, в наличии/отсутствии секции CLIP_INFO_*. У видеофайлов она есть. А парсить X и Y файла на три порядка проще чем в выбросе уродского mediainfo.
В этих же выбросах, сухо, кратко, но по-сути и всё для вас. Тьфу, - для парсинга.

Выдернуто тут:
Код
/usr/lib/mc/ext.d/video.sh

#!/bin/sh

# $1 - action
# $2 - type of file

action=$1
filetype=$2

[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"

do_view_action() {
    filetype=$1

    case "${filetype}" in
    *)
        if mplayer >/dev/null 2>&1; then
            mplayer -identify -vo null -ao null -frames 0 "${MC_EXT_FILENAME}" 2>&1 | \
                sed -n 's/^ID_//p'
        elif which mpv_identify.sh >/dev/null 2>&1; then
            mpv_identify.sh "${MC_EXT_FILENAME}"
        else
            echo "Please install either mplayer or mpv to get information for this file"
        fi
    ;;
    esac
}


Ну и следом с применением команды
Код
$  mplayer -identify -vo null -ao null -frames 0 /path/to/videofile 2>&1 | \
sed -n 's/^ID_//p'

Нет ничего проще, - перенаправляй в переменную и дёргай из неё.
Формат выбросов прост и предсказуем как две копейки. И видно что люди делали для людей.

И так же отсечь каталоги:
Код
$ man test | sed -n '3,12p; 82,84p'
NAME
       test - check file types and compare values

SYNOPSIS
       test EXPRESSION
       test
       [ EXPRESSION ]
       [ ]
       [ OPTION

       -d FILE
              FILE exists and is a directory


Проверка на каталог
Код
$ cat test-dirs.sh
#!/bin/bash

# Checking for a directory
if test -d "$@"; then
    echo -e "\nThis is the directory\n"
fi

Код
$ sh ./test-dirs.sh ../tester

This is the directory


Соответственно проверка на файл
Код
[ ~]$ cat 123.sh
#!/bin/bash

# Checking for a directory
if test -d "$@"
  then
    echo >/dev/null
  else
    echo -e "\nfile\n"
fi

Код
[ ~]$ sh 123.sh /home/tester/
[ ~]$

Код
[ ~]$ sh 123.sh /home/abcde.txt

file



Сообщение отредактировал speccyfighter - 27.11.2019, 11:19
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 28.11.2019, 10:10
Сообщение #62


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

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



Репутация: 1


Обработчик нажатия клавиши Qq для выхода из бесконечного цикла проигрывания:
(с адаптацией под mplayer-vc)
q|Q - останов проигрывания с выходом из цикла
Нажатие учитывает английскую, русскую, украинскую раскладки qwerty/йцукен
Код
$ cat button-4.sh
#!/bin/bash


# Опрос 3 секунды нажатия клавиши 'q' для выхода
for (( i=1; i <= 3; i++ ))
     do

       # Очистить переменную для ввода с клавиатуры
       B=""

       # Прочитать один символ со стандартного ввода
       read -s -t 1 -n 1 B

       # Опрос нажатия клавиши
       case "$B" in
         [qQйЙ]   )  B="q";;
       esac

       # Выход если нажата клавиша q
       if [ "$B" == "q" ]
           then
              echo -e "\nВыход\n"
              exit 0
       fi

done


Подробно об использовании опроса клавиатуры в "мёртвом" цикле:
Учим bash-скрипты, пишем Sokoban


Сообщение отредактировал speccyfighter - 28.11.2019, 10:15
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 28.11.2019, 13:48
Сообщение #63


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

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



Репутация: 1


mplayer-vc версии 0.4.0
Код
#!/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     Playing and exit
mplayer-vc ../path/to/*.mp4       Endless cycle
mplayer-vc ./path/to/*            Endless cycle

Keys:
9 / 0                            Decrease/increase volume
m                                Mute sound
p / SPACE                        Pause (pressing again unpauses)
f                                Toggle fullscreen (X-only)

LEFT and RIGHT                   Backward/forward 10 seconds
UP and DOWN                      Forward/backward 1 minute
PGUP and PGDWN                   Forward/backward 10 minutes

1 and 2                          Adjust contrast
3 and 4                          Adjust brightness

Playing a single video file:
q / ESC / Ctrl+c                 Stop playing and quit

Playing a loop of video files:
q / ESC                          Go to the next video
Double-press the q key           Stop and exit video file loop playback
Double-press Ctrl+C              Stop and exit video file loop playback (tty only)

-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


VIDEOFILE=

# Framebuffer resolution and permissible video file resolution
resolution () {

# Resolution of the original video file in X coordinate
VIDEOWIDTH=`echo "$MEDIAINFO" | grep 'VIDEO_WIDTH' | awk -F '=' '{print $2}'`

# Resolution of the original video file in Y coordinate
VIDEOHEIGHT=`echo "$MEDIAINFO" | grep 'VIDEO_HEIGHT' | awk -F '=' '{print $2}'`

# 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



##
## Play section
##

# One or several files selector
#
# If there is one argument, then
if [[ $# == 1 ]]
     then

            MEDIAINFO=
            MEDIAYES=

            # if the file is not a directory, then
            VIDEOFILE="$@"
            TYPEFILE=`file -b "$VIDEOFILE"`
            if [ "$TYPEFILE" != "directory" ]
                then

                    MEDIAINFO=`mplayer -identify -vo null -ao null -frames 0 "$VIDEOFILE" 2>/dev/null | sed -n 's/^ID_//p' | sed -e '$ d'`
                    MEDIAYES=`echo "$MEDIAINFO" | grep "CLIP_INFO_" | wc -c`
                    if [[ $MEDIAYES > 0 ]]
                        then

                           resolution

                            # Play with variable substitution above
                            clear; mplayer -nocache -softvol -noautosub -nosub $VIDEOOUTPUT -xy $XVSIZE -fs -zoom -framedrop $AUDIOOUTPUT "$VIDEOFILE" &>/dev/null
                            exit 0
                        else

                            echo -e "\nThis is not a video file\n"
                            exit 0
                    fi

                elif [ "$TYPEFILE" == "directory" ]
                        then

                            echo -e "\nThis is a directory\n"
                            exit 0
            fi

     else

            # If there are a lot of files, then
            if [[ $# > 1 ]]
                then

                    MEDIAINFO=
                    MEDIAYES=

                    # all of them in an infinite loop
                    while true
                         do

                              # Each path is a word ($@), for the path ../*: "directory mediafile directory"
                              # If the file is Media, output to stdout (play)
                              # Directories and non-media skip

                              # Parse script parameter: ../* or ../file.mp4
                              for VIDEOFILE in "$@"
                                    do

                                     # Skip the directory
                                     TYPEFILE=`file -b "$VIDEOFILE"`

                                     if [ "$TYPEFILE" != "directory" ]
                                         then

                                             MEDIAINFO=`mplayer -identify -vo null -ao null -frames 0 "$VIDEOFILE" 2>/dev/null | sed -n 's/^ID_//p' | sed -e '$ d'`
                                             MEDIAYES=`echo "$MEDIAINFO" | grep "^CLIP_INFO_" | wc -c`
                                             if [[ $MEDIAYES > 0 ]]
                                                 then

                                                    resolution

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


                                                     # Poll 3 seconds of pressing the 'q' key to exit
                                                     for (( i=1; i <= 3; i++ ))
                                                          do

                                                            # Clear variable for keyboard input
                                                            B=""

                                                            # Read one character from standard input
                                                            read -s -t 1 -n 1 B

                                                            # Key Press Poll
                                                            case "$B" in
                                                              [qQ]   )  B="q";;
                                                            esac

                                                            # Exit if 'q' key is pressed
                                                            if [ "$B" == "q" ]
                                                                then
                                                                exit 0
                                                            fi

                                                     done



                                             fi
                                     fi
                              done


                    done

            fi

fi


Изменения:
- Расширен help
- Добавлен блок проигрывания группы видеофайлов по маске в замкнутом цикле
- Добавлен обработчик опроса клавиатуры для выхода из проигрывания в цикле
- Два блока определения разрешения монитора, файла и масштабирование выделены в отдельную функцию
- Убрана зависимость на mediainfo: теперь анализом разрешений и наличия видеофайла занимается сам mplayer

Скрипт умеет:
- Проигрывать одиночный видео файл с завершением проигрывания или завершением по клавише q
- Проигрывать группу файлов по произвольной маске в замкнутом цикле с завершением по двойному нажатию клавиши q
- При проигрывании в tty выбирает драйвер вывода видео
- При проигрывании в Х-сах драйвер вывода видео выбирает плеер
- В системе с пульсаудио используется пульсаудио; в системе с alsa, - alsa драйвер
- Видео автоматически масштабируется и подстравается под разрешение монитора

Недостатки:
- Не смог убрать блинкование курсора. Поэтому командой clear в скрипте, курсор загоняется в левый верхний угол экрана.
Прямыми командами
setterm --cursor off
setterm --cursor on
tput civis
tput cnorm
курсор выключается и включается, но из скрипта это не работает при проигрывании видео.
Принимаются любые дельные практические советы.

Скриптовый help:
Код
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     Playing and exit
mplayer-vc ../path/to/*.mp4       Endless cycle
mplayer-vc ./path/to/*            Endless cycle

Keys:
9 / 0                            Decrease/increase volume
m                                Mute sound
p / SPACE                        Pause (pressing again unpauses)
f                                Toggle fullscreen (X-only)

LEFT and RIGHT                   Backward/forward 10 seconds
UP and DOWN                      Forward/backward 1 minute
PGUP and PGDWN                   Forward/backward 10 minutes

1 and 2                          Adjust contrast
3 and 4                          Adjust brightness

Playing a single video file:
q / ESC / Ctrl+c                 Stop playing and quit

Playing a loop of video files:
q / ESC                          Go to the next video
Double-press the q key           Stop and exit video file loop playback
Double-press Ctrl+C              Stop and exit video file loop playback (tty only)

-h    --help                     print this help text


Сообщение отредактировал speccyfighter - 28.11.2019, 13:51
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 28.11.2019, 20:22
Сообщение #64


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

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



Репутация: 1


Ещё один недостаток mplayer-vc 0.4.0

- Субтитры выключены.
Потому как отображение шрифта во фреймбуфере, при воспроизведении матроски, не подходит даже под определение говно. Ибо слишком похвально.

Выглятит это так:
Текст субтитров, как черезстрочная развёртка с вырезкой пикселов по вертикали. Затем представьте, что вы взяли эту же надпись с прозрачным фоном, и сдвинув по X пикселов на 20, наложили её на неё же. Это говнище, даже показывать никому нельзя. А скриншот в tty не снять, - это вообще не работает. Никак. Ни через граббер, ни через дамп-конвертация. Только через цифровую зеркалку, штук за пять зелёных. И как это исправить, не знаю.
Поэтому субтитры выключены нахрен, чтобы не показывать это грандиозное позорище.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 28.11.2019, 21:32
Сообщение #65


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Отправил в Aur : https://aur.archlinux.org/packages/mplayer-vc/
поставил оттуда через
yaourt -S mplayer-vc
проверил, работает.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 28.11.2019, 21:50
Сообщение #66


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

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



Репутация: 1


Цитата(kostyalamer @ 28.11.2019, 19:32) *
Отправил в Aur : https://aur.archlinux.org/packages/mplayer-vc/
поставил оттуда через
yaourt -S mplayer-vc
проверил, работает.


Отлично. Спасибо за дополнительный тест.
Хотел полюбопытствовать, а как это делает mpv и руками покрутить. Ага, щас. У альтов в p9 рассинхронизированы версии mpv и библиотек. И mpv в p9 на текущий момент в альтах никак не работает.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 28.11.2019, 22:04
Сообщение #67


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 28.11.2019, 21:50) *
Отлично. Спасибо за дополнительный тест.
Хотел полюбопытствовать, а как это делает mpv и руками покрутить. Ага, щас. У альтов в p9 рассинхронизированы версии mpv и библиотек. И mpv в p9 на текущий момент в альтах никак не работает.

В текущем ледяном knn прикрутил к links - у твой mplayer-vc и mpv на выбор. Единственное , не помню это в 0.988 или в том что у меня собирается на компе.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 28.11.2019, 23:30
Сообщение #68


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

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



Репутация: 1


Цитата(kostyalamer @ 28.11.2019, 20:04) *
В текущем ледяном knn прикрутил к links - у твой mplayer-vc и mpv на выбор. Единственное , не помню это в 0.988 или в том что у меня собирается на компе.


Как-нибудь грузану свежего лядяного и гляну, на предмет mpv.
Но как же жаль что на nx6110 проблема с чипсетом: можно было бы оптимзировать по драйверу компромиссом и под старое железо.
Видеоролик для теста субтитров в tty через фреймбуфер (свободное скачивание):
https://www.libde265.org/downloads-videos/

Прямая ссылка для теста субтитров матроски в tty:
https://www.libde265.org/hevc-bitstreams/to...0x720-cfg01.mkv


Для монитора 1366х768 через фреймбуфер (в tty) в полный экран:

Локальный просмотр
mplayer -vo fbdev2 -xy 1366 -fs -zoom -ao pulse,alsa, -slang rus,en tos-1720x720-cfg01.mkv

Онлайн
mplayer -vo fbdev2 -xy 1366 -fs -zoom -ao pulse,alsa, -slang rus,en https://www.libde265.org/hevc-bitstreams/to...0x720-cfg01.mkv

Для Х-сов
-vo xv
-vo gl
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 29.11.2019, 8:16
Сообщение #69


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


- у меня нет звука (и его регулировки) ни в Х, ни в Консоли.
[- в простом mplayer - есть , в предыдущей версии mplayer-vc - в консоли - точно было.
- 0.988
- предыдущий( по дефолту в 0.988) mplayer-vc переименовал в mplayer-vc-1
- свежая версия - 'yaourt -S mplayer-vc'
]
-----------------------------------
комп - Sams-rv510 - как понимаю с пресловутой гибридной графикой. upd: !! 2 монитора. и пока проверял только с подключеным дополнительным внешним.
===========
p.s.
в 0.988 Линксу уже прикручен выбор "mplayer-vc/mpv/..." и в консоли, и в Иксах (при "активации" видео-файла).
------
запустив 'links'/'lweb' в консоли ; или как-либо в Иксах - удобнее сначала "S" - там есть уже "локальные закладки".

Сообщение отредактировал knn - 29.11.2019, 8:34
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 29.11.2019, 8:33
Сообщение #70


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


как снять выхлоп( "беззвучный") - не знаю
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 29.11.2019, 8:35
Сообщение #71


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


У меня в консоли все нормально, звук есть , а в X-сах он действительно пропал ( вчера не заметил ) дело в том что проверяю на своих старых домашних видео снятых телефоном, а там звук появлеется эпизодически. Юра, как поправишь - перезалью.
PS пишу из консоли из lweb-а , очень удобная вещь !
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 29.11.2019, 8:39
Сообщение #72


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


Цитата(kostyalamer @ 29.11.2019, 8:35) *
PS пишу из консоли из lweb-а

- у меня иногда там бывает, что после залогинивания нужно обновить страницу.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 29.11.2019, 19:24
Сообщение #73


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

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



Репутация: 1


Цитата(kostyalamer @ 29.11.2019, 6:35) *
У меня в консоли все нормально, звук есть , а в X-сах он действительно пропал ( вчера не заметил ) дело в том что проверяю на своих старых домашних видео снятых телефоном, а там звук появлеется эпизодически.

Брось мне в приват или куда-нибудь такое видео на котором звук пропал, для теста.
И сообщи где пропадает, под непривилегированным пользователем? И в каких он состоит группах.



Сообщение отредактировал speccyfighter - 29.11.2019, 19:28
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 29.11.2019, 19:46
Сообщение #74


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 29.11.2019, 19:24) *
Брось мне в приват или куда-нибудь такое видео на котором звук пропал, для теста.
И сообщи где пропадает, под непривилегированным пользователем? И в каких он состоит группах.

Скинул , да в X-сах под обычным пользователем.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 30.11.2019, 8:14
Сообщение #75


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

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



Репутация: 1


В лайве IceArch-0.988 у меня всё намного хуже чем у вас smile.gif

В этом скрипте
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 и с библиотекой и с обновлением баз было хорошо.

Цитата(kostyalamer @ 29.11.2019, 6:35) *
У меня в консоли все нормально, звук есть , а в X-сах он действительно пропал ( вчера не заметил )

Но будем оптимистами smile.gif - у меня всё это было на IceArch-0.988 не так уж и плохо, а ещё хуже.
Приглашения логина в лайве 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

Цитата(kostyalamer @ 29.11.2019, 6:35) *
У меня в консоли все нормально, звук есть , а в X-сах он действительно пропал

alsa так не умеет smile.gif
Она через 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, то звук у меня даже хрен заведётся. smile.gif
Я приблизительно помню конфиг переиндексации на память, но ломать так мозг мне лень.

Приблизительно в ту же тему:
Народ говорит про УМВР с пульсой...
Ага... У него контролов чуть больше 20-ти. А у меня на чипе AD1988, у которого больше 40-ка контролов, пульсу просто тошнило. И иногда она скрежетала как несмазанная телега. И часто рушилась. Поэтому лет несколько назад я с пульсой окончательно попрощался. Год-полтора подряд пытался проникнуться ею, но из этого у меня ничего не вышло. Конечно, сейчас всё ПО прибито и усиленно прибивается к пульсе. И это может на чём-то аукнуться. Но тут мне приходится выбирать в линукс-системах, между плохо и ещё хуже.


Сообщение отредактировал speccyfighter - 30.11.2019, 9:33
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 30.11.2019, 8:47
Сообщение #76


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Юра, xterm есть в ледяном, но он не дружит с кириллицей - поэтому его нет в меню.
На рабочем столе есть кнопка init_key запусти эту программу, обновятся ключи - потом можно ставить все что угодно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 30.11.2019, 9:26
Сообщение #77


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата
Но будем оптимистами smile.gif - у меня всё это было на IceArch-0.988 не так уж и плохо, а ещё хуже.
Приглашения логина в лайве IceArch нет, а сразу рутом.

Юра, live режим сделан под root - а так и задумано , но на самом деле там есть один бесхомячный пользователь ice.
Он нужен для сборки пакетов из aur-а , может быть вполне подойдет тебе для тестов.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 30.11.2019, 9:47
Сообщение #78


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

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



Репутация: 1


Цитата(kostyalamer @ 30.11.2019, 6:47) *
На рабочем столе есть кнопка init_key запусти эту программу, обновятся ключи - потом можно ставить все что угодно.

Не-а smile.gif Он валит бесконечные не удалось получить.
Как понимаю:
Пока нормальную библиотеку руками не вопрешь в систему, вообще из сервера ничего получить невозможно, - ни ключей, ни базы, ни пакетов.
Подумал может хоть что-то увижу, если пойму, но не судьба:
Код
root<>archiso:~/# strace -o lib-error.txt pacman -Sy
bash: strace: команда не найдена

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 30.11.2019, 10:38
Сообщение #79


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 30.11.2019, 9:47) *
Не-а smile.gif Он валит бесконечные не удалось получить.
Как понимаю:
Пока нормальную библиотеку руками не вопрешь в систему, вообще из сервера ничего получить невозможно, - ни ключей, ни базы, ни пакетов.

Странно, у меня после init_key все работает как положено :
https://ibb.co/Xkxqxwt
видимо у тебя инициализация ключей прошла с ошибкой. Может быть сервер в этот момент был недоступен .
Попробуй перезагрузить систему, сделать еще раз init_key и поставить mousepad для теста.
Ключ Y в pacman-е в данном случае тебе не нужен, init_key обновляет базу сам.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 14.7.2020, 14:12
Сообщение #80


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

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



Репутация: 1


В секцию выбора устройства вывода, в версию 0.35, нужно добавлять 'exit 1' по else, запрещающее запуск mplayer-vc не в виртуальной консоли tty*
Код
# 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

Проблема в следующем:
Единственное окно, чем и является X-теминал, на рабочем столе icewm может оставаться в бэкграунд и неактивным. Чего теоретически не должно быть. Это значит, что на паузе в 3 секунды, между проигрываниями видеофайлов по маске в бесконечном цикле, когда процесс mplayer завершён и его окно отсутствует, клавиша выхода из проигрывания, которая задана в скрипте запущенном в X-терминале, обрабатываться не будет (поскольку окно неактивно) и выход из бесконечного цикла невозможен.

Курсор мыши, не показатель активности окна. Показатель активности окна, это хоткеи:
Хоткеями обрабатываются опции меню окна, только активного окна.

Этой проблемы нет и не будет в kde, xfce и подобных, и само-собой в tty, когда единственное окно на рабочем столе, всегда активно. И в случае когда активное окно (mplayer) исчезает, бэкграунд неактивное окно (X-теминал) автоматически становится активным.

Следующая версия скрипта mplayer-vc (0.36?), будет запускаться только в tty. Будет уметь проигрывать только один файл с выходом из проигрывания или группу видеофайлов по маске в бесконечном цикле с выходом из цикла по хоткею и завершением проигрывания.

Сообщение отредактировал speccyfighter - 14.7.2020, 14:43
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 23.7.2020, 17:20
Сообщение #81


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

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



Репутация: 1


Секция должна выглядеть где-то так:
Код
# 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"
    else
        clear
        echo "This is not a tty."
        echo "Please run mplayer-vc in the virtual console."
        exit 1
fi


Этот блок кода запрещает запуск mplayer-vc в X-терминалах и разрешает запуск только в tty. Но одновременно это решает проблему хоткеев, когда единственное на рабочем столе icewm, окно X-терминала может оставаться в неактивным в бэкграунд, с отказом работы хоткеев.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 23.7.2020, 17:46
Сообщение #82


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

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



Репутация: 1


Полный листинг mplayer-vc v0.36.1
Код
#!/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     Playing and exit
mplayer-vc ../path/to/*.mp4       Endless cycle
mplayer-vc ./path/to/*            Endless cycle

Keys:
9 / 0                            Decrease/increase volume
m                                Mute sound
p / SPACE                        Pause (pressing again unpauses)
f                                Toggle fullscreen (X-only)

LEFT and RIGHT                   Backward/forward 10 seconds
UP and DOWN                      Forward/backward 1 minute
PGUP and PGDWN                   Forward/backward 10 minutes

1 and 2                          Adjust contrast
3 and 4                          Adjust brightness

Playing a single video file:
q / ESC / Ctrl+c                 Stop playing and quit

Playing a loop of video files:
q / ESC                          Go to the next video
Double-press the q key           Stop and exit video file loop playback
Double-press Ctrl+C              Stop and exit video file loop playback

-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


VIDEOFILE=

# Framebuffer resolution and permissible video file resolution
resolution () {

# Resolution of the original video file in X coordinate
VIDEOWIDTH=`echo "$MEDIAINFO" | grep 'VIDEO_WIDTH' | awk -F '=' '{print $2}'`

# Resolution of the original video file in Y coordinate
VIDEOHEIGHT=`echo "$MEDIAINFO" | grep 'VIDEO_HEIGHT' | awk -F '=' '{print $2}'`

# 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"
    else
        clear
        echo "This is not a tty."
        echo "Please run mplayer-vc in the virtual console."
        exit 1
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



##
## Play section
##

# One or several files selector
#
# If there is one argument, then
if [[ $# == 1 ]]
     then

            MEDIAINFO=
            MEDIAYES=

            # if the file is not a directory, then
            VIDEOFILE="$@"
            TYPEFILE=`file -b "$VIDEOFILE"`
            if [ "$TYPEFILE" != "directory" ]
                then

                    MEDIAINFO=`mplayer -identify -vo null -ao null -frames 0 "$VIDEOFILE" 2>/dev/null | sed -n 's/^ID_//p' | sed -e '$ d'`
                    MEDIAYES=`echo "$MEDIAINFO" | grep "CLIP_INFO_" | wc -c`
                    if [[ $MEDIAYES > 0 ]]
                        then

                           resolution

                            # Play with variable substitution above
                            clear; mplayer -nocache -softvol -noautosub -nosub $VIDEOOUTPUT -xy $XVSIZE -fs -zoom -framedrop $AUDIOOUTPUT "$VIDEOFILE" &>/dev/null; clear
                            exit 0
                        else

                            echo -e "\nThis is not a video file\n"
                            exit 0
                    fi

                elif [ "$TYPEFILE" == "directory" ]
                        then

                            echo -e "\nThis is a directory\n"
                            exit 0
            fi

     else

            # If there are a lot of files, then
            if [[ $# > 1 ]]
                then

                    MEDIAINFO=
                    MEDIAYES=

                    # all of them in an infinite loop
                    while true
                         do

                              # Each path is a word ($@), for the path ../*: "directory mediafile directory"
                              # If the file is Media, output to stdout (play)
                              # Directories and non-media skip

                              # Parse script parameter: ../* or ../file.mp4
                              for VIDEOFILE in "$@"
                                    do

                                     # Skip the directory
                                     TYPEFILE=`file -b "$VIDEOFILE"`

                                     if [ "$TYPEFILE" != "directory" ]
                                         then

                                             MEDIAINFO=`mplayer -identify -vo null -ao null -frames 0 "$VIDEOFILE" 2>/dev/null | sed -n 's/^ID_//p' | sed -e '$ d'`
                                             MEDIAYES=`echo "$MEDIAINFO" | grep "^CLIP_INFO_" | wc -c`
                                             if [[ $MEDIAYES > 0 ]]
                                                 then

                                                    resolution

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


                                                     # Poll 3 seconds of pressing the 'q' key to exit
                                                     for (( i=1; i <= 3; i++ ))
                                                          do

                                                            # Clear variable for keyboard input
                                                            B=""

                                                            # Read one character from standard input
                                                            read -s -t 1 -n 1 B

                                                            # Key Press Poll
                                                            case "$B" in
                                                              [qQ]   )  B="q";;
                                                            esac

                                                            # Exit if 'q' key is pressed
                                                            if [ "$B" == "q" ]
                                                                then
                                                                clear
                                                                exit 0
                                                            fi

                                                     done



                                             fi
                                     fi
                              done


                    done

            fi

fi


Требуется тестирование.
Пользователь должен быть в группе видео.
Права должны быть:
Код
$ ls -l /dev/fb0
crw-rw---- 1 user root 29, 0 июл 22 00:38 /dev/fb0


А в альтах, строка 49
Код
# grep ' <fb> ' /etc/security/console.perms.d/50-default.perms.probe
<console>  0600 <fb>         0600 root

должна выглядеть как
Код
# grep ' <fb> ' /etc/security/console.perms.d/50-default.perms.probe
<console>  0660 <fb>         0660 root.video

Правка конфига в таком виде, исключает монопольній захват фреймбуфера и разрешит пользователю группы video использовать mplayer в tty.
В арче такая правка не требуется и в нём права на фрейбуфер верные.
В альтах реализовано на уровне кода, но не реализовано на уровне конфига, с отказом исправления, молчанием в багрепорте.

Смысл скрипта версии 0.36 (базируется на 0.35):
- Проигрывание одного видеофайла с завершением проигрывания.
- Проигрывание группы видеофайлов по маске в бесконечном цикле.

Сообщение отредактировал speccyfighter - 23.7.2020, 21:52
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 23.7.2020, 21:24
Сообщение #83


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

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



Репутация: 1


Проверил в альте версию 0.36.
При воспроизведении, единственная замеченная "сопля", это по прерывании бесконечного цикла, нужно очищать экран. Иначе например help наложится на последнее изображение, на котором прерван бесконечный цикл. Или по выходу из бесконечного цикла, выполнить clear.
В остальном нормально. Ну может быть ещё help слегка подчистить от намёков на X-сы, в которых mplayer-vc 0.36+ запускаться не будет.
В ледяном не проверял, но заработает без эквилибристики как в альтовом pam0_console.
Упрощение проигрывания видео в tty сделано по-максимуму. И проще, на мой взгляд, уже просто некуда.

Главное, что в виртуальной консоли, мозг не будет ломать километрами опций и параметров.
И при этом, не будет требовать феноменальных мощностей железа и 4D. Видео заработает на всём, что хоть как-то можно сегодня назвать компьютером.


Сообщение отредактировал speccyfighter - 23.7.2020, 21:29
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 23.7.2020, 21:55
Сообщение #84


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

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



Репутация: 1


Цитата(speccyfighter @ 23.7.2020, 19:24) *
Проверил в альте версию 0.36.
- При воспроизведении, единственная замеченная "сопля", это по прерывании бесконечного цикла, нужно очищать экран. Иначе например help наложится на последнее изображение, на котором прерван бесконечный цикл. Или по выходу из бесконечного цикла, выполнить clear.
- В остальном нормально. Ну может быть ещё help слегка подчистить от намёков на X-сы, в которых mplayer-vc 0.36+ запускаться не будет.

Исправлено в последнем полном листинге.
Версия повышена до 0.36.1
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 23.7.2020, 22:11
Сообщение #85


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 23.7.2020, 21:55) *
Исправлено в последнем полном листинге.
Версия повышена до 0.36.1

Юра , в Aur-е лежит твой mplayer-vc с версией 0.4.0 :
https://aur.archlinux.org/packages/mplayer-vc/
Может тогда еще повысишь версию и пушнуть его в aur ?
В ледяной то я его могу и так подсунуть тут проблем с версиями нет.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 23.7.2020, 22:26
Сообщение #86


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

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



Репутация: 1


Цитата(kostyalamer @ 23.7.2020, 20:11) *
Юра , в Aur-е лежит твой mplayer-vc с версией 0.4.0 :
https://aur.archlinux.org/packages/mplayer-vc/
Может тогда еще повысишь версию и пушнуть его в aur ?

Костя, зачем повышать? smile.gif
В аур ноль-четыре-ноль.
А это же ноль-тридцатьшесть-один, а не ноль-сорок-ноль.

До ноль-сорок-ноль ей ещё далеко.

В 0.36.1 реализовано:
- Или один файл с окончанием проигрывания
- Или любые несколько файлов в бесконечном цикле с выходом из цикла по двойному q.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 23.7.2020, 22:35
Сообщение #87


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Цитата(speccyfighter @ 23.7.2020, 22:26) *
Костя, зачем повышать? smile.gif
В аур ноль-четыре-ноль.
А это же ноль-тридцатьшесть-один, а не ноль-сорок-ноль.

Точно , тогда отправлю в aur smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 24.7.2020, 8:51
Сообщение #88


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Собрал пакет , погонял на рабочей системе в чистой консоли на тестовых видео - все отлично работает.
Вечером пушну в Aur.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 24.7.2020, 22:56
Сообщение #89


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


К сожалению aur немного прилег :
Цитата
503 - Service Unavailable
Don't panic! This site is down due to maintenance. We will be back soon.

Бывает с ним такое иногда , как подымется - пушну.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kostyalamer
сообщение 25.7.2020, 1:07
Сообщение #90


Профессионал
*******

Группа: Пользователь
Сообщений: 4384
Регистрация: 17.9.2009
Вставить ник
Цитата
Пользователь №: 1617
Страна: Россия
Город: Санкт-Петербург
Пол: Муж.



Репутация: 20


Залил в Aur : https://aur.archlinux.org/packages/mplayer-vc/
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 25.7.2020, 17:19
Сообщение #91


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


Так, к слову, чтоб не было прецедентов по окончательному переводу MPlayer~а в статус прикопаных стюардесс smile.gif - "страшнючее видео(iptv-mplayer из консоли 2020-03. IceArch. Особых подробностей сейчас не вспомню)" - линк . ( возможно и где-то уже выкладывал...)
"Страшнючее" - т.к. "в оригинале" - порядок - нормальное изображение и звук (но не всё управление работает[/и отображается]); при консольных съемках (ffmpeg~ом) - на мониторе небольшие строчные баги; ну а записаный результат - конечно получается "действительно совсем уж страшнючий" biggrin.gif .
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 25.7.2020, 19:19
Сообщение #92


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

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



Репутация: 1


Цитата(knn @ 25.7.2020, 15:19) *
Так, к слову, чтоб не было прецедентов по окончательному переводу MPlayer~а в статус прикопаных стюардесс smile.gif - "страшнючее видео(iptv-mplayer из консоли 2020-03. IceArch. Особых подробностей сейчас не вспомню)" - линк . ( возможно и где-то уже выкладывал...)
"Страшнючее" - т.к. "в оригинале" - порядок - нормальное изображение и звук (но не всё управление работает[/и отображается]); при консольных съемках (ffmpeg~ом) - на мониторе небольшие строчные баги; ну а записаный результат - конечно получается "действительно совсем уж страшнючий" biggrin.gif .

smile.gif Он страшнючий, потому что:
- Во-первых у него 1.000 FPS, но никак не 24.
- А во-вторых, кто-то догадался видео в формате Advanced Video Codec затолкать в Матроска контейнер.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 25.7.2020, 19:29
Сообщение #93


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


Цитата(speccyfighter @ 25.7.2020, 19:19) *
smile.gif Он страшнючий, потому что:
- Во-первых у него 1.000 FPS, но никак не 24.
- А во-вторых, кто-то догадался видео в формате Advanced Video Codec затолкать в Матроска контейнер.

- спасибо - попробую осмыслить (это были консольные съемочные пробы, с ffmpeg с того момента пока дальше не разбирался - не до того пока было... )
--------
ps
то видео вроде еще пережимал (для уменьшения размера, но не уверен)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 25.7.2020, 19:57
Сообщение #94


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


Юрий, тут тогда вопрос по "смежной теме":
(грешен, - пока с азбукой не разобрался)
- ? в чем может быть причина того, что если запустить просмотр видео в tty какой-либо "запускалкой( links, ф/м, и т.п.)" !в screen( про другие мультиплексоры не скажу), то применительно к mpv - грузит проц 100% если не более? (про MPlayer не помню)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 25.7.2020, 22:54
Сообщение #95


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

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



Репутация: 1


Про screen я не в курсе. О нём у меня представления достаточно туманные. Мне сначала нужно выстроить ясную картину использования, во всех отношениях, а потом использую. А это процесс не быстрый. Но предсказуемый.

С mpv в tty надо быть осторожным. mpv минимум на порядок лучше воспроизводит субтитры матроски в tty, чем mplayer. Но в отличие от mplayer, mpv не прощает ошибок:
Если `mpv --vo drm file` запустить в tty, то при переключении в виртуальную консоль на которой подняты X-сы, рухнет и X-сессия и X-сервер.
`mplayer -vo fbdev2` такую ошибку прощает. Но в mplayer туго с воспроизведением субтитров матроски в tty. И как победить это, не знаю.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 26.7.2020, 4:39
Сообщение #96


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


падение Иксов от `mpv --vo=drm file` - сейчас смотрел (раньше не замечал)
---------
- сейчас вспомнил - MPlayer из screen~a вроде вообще запустить нельзя...
(у меня по работе 'screen' представления пока нет почти вовсе; как-то dvtm недого пользовал.)
---------
Тематику консольных видео в последнее время подзабросил(/"приморозил").
[ а с mpv-из-под-screen - там нескучно - кроме мощной загрузки процессора, при подключенном к ноуту доп.внешнем мониторе, видео воспроизводится и во всех остальных tty на втором мониторе. Но это уже mpv-шная тема... ( а при запуске не из screen, а просто-tty - если не заходить при просмотре в запущенные Иксы, то на Арче они у меня не вылетали, а перекидывались в tty7.
Все равно сдается - тут без азбуки никак wacko.gif ) ]

Сообщение отредактировал knn - 26.7.2020, 4:43
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 26.7.2020, 7:30
Сообщение #97


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


- получается относительно давно с iptv-mplayer-console не ковырялся...
- половину из нарытого пока порастерял ( и в частности "трюк" из - de-catenator_part3_iptv-Mplayer_IceArch-0.994.mkv со стр.
сходу не повторяется - нужно смотреть причины. Ну там привязка к ptv-серверу...).
- из хорошего - имеется "набор подходящих каналов(с 70%-ой работоспособностью)" - по наличию времени буду ковыряться с параметрами запуска и просмотра.
---------------
ps
iptv-mplayer-console при двух мониторах у меня показывает на обоих и во всех tty( htop не видно)

pps
с запущенным `mplayer -vo fbdev2` на Арче, Иксы не падают(но вроде перемещаются в tty7 [pps - оттуда. htop - выcокий - нужно пробовать различн. команды])

Сообщение отредактировал knn - 26.7.2020, 7:44
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 26.7.2020, 13:04
Сообщение #98


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

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



Репутация: 1


Цитата(knn @ 26.7.2020, 2:39) *
`mpv --vo=drm file`
( а при запуске не из screen, а просто-tty - если не заходить при просмотре в запущенные Иксы, то на Арче они у меня не вылетали, а перекидывались в tty7.

У меня на интел графике при переключении в tty7 на проигрывании через mpv, X-сервер разгружает модуль modesetting, который и есть драйвер modesetting_drv под графику Intel KMS (интел без kms отучили и без kms он не умеет). И соотвественно рушится X-сервер, с необходимостью рестарта сервиса dm.
mpv на интел графике работает в tty: Работает? Не трогай и не дыши.
Для стабильной работы, ему требуется принудительный runlevel 3.

Цитата(knn @ 26.7.2020, 2:39) *
Все равно сдается - тут без азбуки никак wacko.gif

Никак.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
speccyfighter
сообщение 26.7.2020, 13:30
Сообщение #99


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

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



Репутация: 1


Цитата(knn @ 26.7.2020, 5:30) *
pps
с запущенным `mplayer -vo fbdev2` на Арче, Иксы не падают(но вроде перемещаются в tty7 [pps - оттуда. htop - выcокий - нужно пробовать различн. команды])

У меня на Core i3-5005U (слабый 15-тиваттный процессор для автономных систем)
при воспроизведении в tty в полный экран 1366x768, через `mplayer -vo fbdev2`
видео в mkv HD 720p:
https://mango.blender.org/download/

не сильно загружает процессор (см. idle - свободные ресурсы процессора в all среднее) в системе на p9-xfce-sysv:
Код
$ sleep 10; sar -P ALL 1 30
Linux 5.4.51-std-def-alt1 (core-i3-5005u)     26.07.2020     _x86_64_    (4 CPU)
...

Среднее:     CPU     %user     %nice   %system   %iowait    %steal     %idle
Среднее:     all     13,49      0,00      0,45      0,03      0,00     86,03
Среднее:       0     12,59      0,00      0,43      0,13      0,00     86,84
Среднее:       1      5,81      0,00      0,43      0,00      0,00     93,76
Среднее:       2      2,37      0,00      0,50      0,00      0,00     97,13
Среднее:       3     33,20      0,00      0,43      0,00      0,00     66,37

Вывод в сумме с браузером palemoon.
Если отбросить ещё процентов 5 браузера, то загрузка процессора по видео, процентов 10, не больше. При этом это интел графика, с выделением видеопамяти из общего массива памяти.
Такая видеографика, рядом с дискретной, и рядом не лежала. Здесь в ноутбуке, всё расчитано не на производительность, а на энергосбережение. Включая и перевод с intel_pstate на acpi_cpufreq.

Сообщение отредактировал speccyfighter - 26.7.2020, 13:53
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
knn
сообщение 26.7.2020, 14:08
Сообщение #100


Специалист
****

Группа: Активный Пользователь
Сообщений: 157
Регистрация: 6.3.2019
Вставить ник
Цитата
Пользователь №: 3002
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 2


- кроме азбуки похоже пригодятся и инструменты ( раньше намеревался - аналог mpv-k-prf.sh ( с выбором профилей). Правда и в mpv-параметрах пока не разобрался. Но сравнение тоже "метод познания", думаю многое перенесется по-аналогии [различия тоже неизбежны])
----------
Pentium T4500
Device-1: AMD RV710/M92 [Mobility Radeon HD 4530/4570/545v]
(с гибридной графикой осбо обращаться пока не научился)
----------
после прекращения показа iptv-mplayer в консоли с параллельно запущенными Иксами - Xorg "остаточно" грузил вроде на 46%
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

4 страниц V   1 2 3 > » 
Ответить в эту темуОткрыть новую тему
( Гостей: 2 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 18.9.2025, 23:03