![]() |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Поделиться |
![]()
Сообщение
#1
|
|
Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Включил два ноутбука с дисплеями разных пропорций и достал костыллятор:
Всё что ниже, потенциально предназначено для консольных дистрибутивов повседневного пользовательского уровня с уровнем пользователя от среднего и ниже. А также поиск путей упрощения запуска медиаконтента в консоли. С доведением консольных систем до повседневного использования. Первый скрипт: Воспроизводит все видеофайлы с любыми пропорциями на дисплеях с любыми пропорциями. Формат запуска: Код $ mplayer-vc /путь/к/видеофайлу На дух не переносит пробелов в пути: $@ отдельные куски полного пути разделённые пробелами воспринимает как отдельные параметры и режет бэкслэши. Как справиться с этим не знаю. Листинг скрипта: Код $ cat ~/mplayer-vc #!/bin/bash VIDEOFILE=$(echo "$@") # Разрешение оригинального видеофайла по X VIDEOWIDTH=`mediainfo $VIDEOFILE | grep 'Width' | awk '{printf $3}'` # Разрешение оригинального видеофайла по Y VIDEOHEIGHT=`mediainfo $VIDEOFILE | grep 'Height' | awk '{printf $3}'` # Пропорции изоражения видео в десятичном виде ASPECTMP=`mediainfo $VIDEOFILE | grep 'Display aspect ratio' | rev | awk '{printf $1}' | rev | sed 's/:/\//'` VIDEOASPECT=`echo $ASPECTMP | bc -l | sed 's/^\(......\).*/\1/'` # Пропорции фреймбуфера в десятичном виде FBASPECT=`fbset --test | grep mode | awk -F '"' '{print $2}' | sed 's/x/\//' | bc -l |sed 's/^\(......\).*/\1/'` # Разрешение фреймбуфера по Y в пикселах FBHEIGHT=`fbset --test | grep mode | awk -F '"' '{print $2}' | awk -F 'x' '{printf $2}'` # Если видеофайл с пропорциями 4x3 воспроизводится в widescreen мониторе, то # вычислить коэффициент масштабирования до Y фреймбуфера # и далее использовать этот коэффициент # для получения предела промасштабирования видео по X if [ "$VIDEOASPECT" == 1.3333 -a "$FBASPECT" > 1.3333 ]; then VSIZEXXX=`echo "$FBHEIGHT/$VIDEOHEIGHT" | bc -l` XVSIZE=`echo "$VIDEOWIDTH*$VSIZEXXX" | bc -l` # иначе вычислить X фреймбуфера else XVSIZE=`fbset --test|grep geometry|awk '{print $2}'` fi # пропорционально масштабировать по коэффициенту # до X фреймбуфера, - в переменной XVSIZE setterm --blank 0; mplayer -nocache -softvol -xy $XVSIZE -fs -zoom $VIDEOFILE &>/dev/null XVSIZE (переменная): X - координата V - видео, видеофайл SIZE - размер собственно XVSIZE - размер видео в пикселах в полный экран по координате X Другой вариант этой мысли упрощения просмотра видеофайлов в консоли: Это использовать алиас Код $ ls -l /etc/bashrc.d/mplayer.sh -rwxr-xr-x 1 root root 110 янв 11 18:43 /etc/bashrc.d/mplayer.sh Код $ cat /etc/bashrc.d/mplayer.sh alias mplayer-vofbdev="setterm --blank 0; mplayer -nocache -softvol -xy $(fbset --test|grep geometry|awk '{print $2}') -fs -zoom &>/dev/null" Формат запуска для просмотра видео в консоли Код $ mplayer-vofbdev /путь/к\ какому\ то\ видео\ файлу Достоинства: Промасштабирует видео в плюс или минус до разрешения фреймбуфера. Обрабатывает пробелы в пути. Недостаток: На дух не переваривает воспроизведение видео с пропорциями 4x3 в widescreen мониторе. Суть проблемы: -xy N масштабирует по X до размера фреймбуфера по X и если видео по Y выходит за пределы координаты, mplayer откажется отображать видео. При просмотре видеофайла с пропорцией 4x3 на widescreen мониторе, сначала требуется масштабировать по Y и пропорционально масштабировать по X. Предварительно запросив разрешение и пропорции видеофайла. Такие вот невесёлые пирожки с котятами... Сообщение отредактировал speccyfighter - 12.1.2018, 11:50 |
|
|
![]() |
![]()
Сообщение
#2
|
|
Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Система на alt-p8-sysv-tde-i586:
Тест в tty и pts пройден. Скрипт пригоден для сборки rpm пакета. Последний вариант скрипта стал универсальным для арч и альтов. Сообщение отредактировал speccyfighter - 7.11.2019, 6:52 |
|
|
![]()
Сообщение
#3
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 4384 Регистрация: 17.9.2009 Вставить ник Цитата Пользователь №: 1617 Страна: Россия Город: Санкт-Петербург Пол: Муж. Репутация: ![]() ![]() ![]() |
Система на alt-p8-sysv-tde-i586: Тест в tty и pts пройден. Скрипт пригоден для сборки rpm пакета. Последний вариант скрипта стал универсальным для арч и альтов. Отлично , если соберешь rpm-ку можно отправить в 8-ую и 9-ую клубную репы ( а если с Антоном договоришься, можно и в официальные ). Потом по аналогии могу сделать пакет для Арча и пушнуть его в Aur . |
|
|
![]()
Сообщение
#4
|
|
Крупный специалист ![]() ![]() ![]() ![]() ![]() Группа: Пользователь Сообщений: 461 Регистрация: 1.5.2013 Вставить ник Цитата Пользователь №: 2379 Страна: Беларусь Город: Не указан Пол: Муж. Репутация: ![]() ![]() ![]() |
Система на alt-p8-sysv-tde-i586: Тест в tty и pts пройден. Скрипт пригоден для сборки rpm пакета. Последний вариант скрипта стал универсальным для арч и альтов. Отлично , если соберешь rpm-ку можно отправить в 8-ую и 9-ую клубную репы ( а если с Антоном договоришься, можно и в официальные ). Потом по аналогии могу сделать пакет для Арча и пушнуть его в Aur . Угу... ![]() Кость, ты ж меня знаешь, если начну докапываться, чтобы довести до релиза, то выгребу всех тараканов. Как выяснилось, скрипт ещё не готов до статуса публичного релиза, который просто должен работать: Дайте мне топор, чтобы я этим поттерингопоклонникам-кодописателям руки нахер поотрубал. Четыре часа бьюсь и не могу понять, какого хера в 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 |
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 14.6.2025, 20:00 |