LINUX.ORG.RU

Избранные сообщения xDShot

не работает клавиатура частично в rimworld нативно

Форум — Games

не работает клавиатура, только цифры и стрелки, в приоритете сверху английская раскладка, запуск игры с английской раскладкой также не помогает Arch Linux Gnome 48 Wayland

 

assasin2029
()

Как закалялся шакал: а где можно download more ram?

Статьи — Администрирование

Вступление

Данная статья написана с целью концентрации знаний о сжатии данных оперативной памяти.

Я использую gentoo, поэтому имена пакетов будут приводиться в формате этого дистрибутива.

Подразумевается, что читающий имеет желание и возможность (одно из):

  • произвести конфигурацию и/или сборку ядра;
  • в случае отсутствия искомой функциональности в «ванильном» - найти и использовать ядро, в котором уже всё есть.

( читать дальше... )

 , , ,

Bfgeshka
()

NetBSD pkgsrc на Linux-системе

Галерея — Скриншоты

Многие слышали о проекте Homebrew. Возможно, кто-то знает, что пакеты из этого репозитория можно установить и на Linux.

Для меня было неожиданностью, что на Linux также можно установить пакеты из дерева pkgsrc (NetBSD).

На поверку оказывается, что пытаться устанавливать бинарные пакеты посредством pkgin смысла нет, т.к. они собраны на RHEL 7.x и зависят от библиотек в /lib64, а не в /lib/x86_64-linux-gnu, как принято на Debian. Тем не менее, многие пакеты можно собрать из исходного кода (хотя многие другие, увы, сломаны — по крайней мере, в смысле сборки на Linux).

В сухом остатке: если Homebrew годится для установки чего-нибудь «хипстерского» и «модного», типа wezterm, btop или atuin, то pkgsrc можно использовать для быстрой установки чего-то, что давно закопали (как, например, GTK+ первой версии, gCvs, xosview или системный монитор в виде не совсем одетой барышни).

Но, используя любую из экосистем, можно установить и вполне современный Clang, и вполне современный CMake.

На снимке:

  • ОС: Devuan Linux 5 Daedalus.
  • WM: Window Maker.
  • Веб-браузер: tabbed surf -e.
  • Эмулятор терминала: XTerm (как видите, он вполне поддерживает sixel).
  • «Протухший» Angband 3.5 из Debian.
  • Свежий Angband 4.2 из Homebrew.
  • Такой же свежий Angband 4.2 из pkgsrc.
  • Дерево пакетов Homebrew (brew deps --graph --dot %s | dot -Tx11).
  • Дерево пакетов pkgsrc (pkgdepgraph | dot -Tx11).

 , , ,

Bass
()

Можно ли выбрать boot cpu отличающийся от CPU0?

Форум — Admin

Собственно в чем суть. Есть новые интеловские процессоры начиная с метеорлейка , arrow тоже такой же и видимо все последующие линейки плиточных интелов будут такими же. Там есть SOC-плитка с двумя E-ядрами - они последние в списке. В моем случае 125Н это CPU 16 и 17. Остальные P и E ядра на другой плитке, и суть интеловской идеи при легкой нагрузке и в режиме сна S0iX отключать процессорную плитку полностью, а все легкие ждущие задачи крутить на ядрах SOC плитки. Ее по любому не отключишь - там контроллер памяти, порты , шина и прочая хабовая часть.

Под оффтопом так и работает, а вот онтопик бутится всегда с CPU0. Засунуть команду в ядро ограничить количество CPU на буте можно - но это всегда будет CPU0 а это всегда жручий P-core. И соффланить его потом после загрузки с передачей всех функций на 16 или 17 cpu не выходит. Нагрузку через шедьюлер можно перебросить на E-ядра (с этим отлично справляется intel_lpmd) - но вот разные служебные ядерные процессы продолжают вертеться на CPU0 что не позволяет отключить плитку с ядрами поностью и перейти на SOC. Поэтому вот и ищется странное - как заставить линукс грузиться с определенного ядра.

 ноутбук boot

Qui-Gon
()

Gorky 17 в 2025 году

Галерея — Скриншоты

Gorky 17  — ролевая компьютерная игра, разработанная польской компанией Metropolis Software и выпущенная Monolith Productions для Microsoft Windows в 1999 году. Позже игра была портирована на Linux фирмой Hyperion Entertainment и выпущена Linux Game Publishing в 2006 году.

Здесь мы рассматриваем именно нативную для Linux версию.

Начнем с инсталятора:

ldd gorky18-installer-2009.01.14.bin
        linux-gate.so.1 => linux-gate.so.1 (0xf7f59000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xf7f2f000)
        libz.so.1 => /lib32/libz.so.1 (0xf7f16000)
        libbz2.so.1 => not found
        libdl.so.2 => /lib32/libdl.so.2 (0xf7f11000)
        libm.so.6 => /lib32/libm.so.6 (0xf7e44000)
        libc.so.6 => /lib32/libc.so.6 (0xf7c1d000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xf7f5b000)
Исправляется так: создаем директорию lib там, где лежит инсталятор, копируем туда 32 битную libbz2.so и делаем симлинк. Например:
mkdir lib
cp /lib32/libbz2.* lib
export LD_LIBRARY_PATH="./lib"
cd lib
ls -s libbz2.so libbz2.so.1
Уточняю, инсталятор текстовый. После вышеописанного запускается без проблем. Gorky 17 требует для работы звука oss, так как это 32-битное приложение и у меня alsa используется для вывода звука, то мне пришлось собирать alsa-oss-32. Вот так
./configure --prefix=/usr --libdir=/usr/lib32
        make
        make DESTDIR=$PKG install
        mv $PKG/usr/bin/aoss $PKG/usr/bin/aoss-32
        rm -r $PKG/usr/share/man/
        rm $PKG/usr/include/oss-redir.h
Кроме вышеуказанного, создал ещё пустой файл .32bit в директорию пакета, чтобы переменные 32-битные передались в сборку (это специфика CRUX). Конкретно вот это:
export CFLAGS="${CFLAGS} -m32"
export CXXFLAGS="${CXXFLAGS} -m32"
export LDFLAGS="${LDFLAGS} -m32"
export PKG_CONFIG_LIBDIR="/usr/lib32/pkgconfig"
То есть если у вас не CRUX и вы собираете alsa-oss-32, то эти переменные придется передавать руками. И затем запускал так:
aoss-32 ./gorky18

 ,

vbcnthfkmnth123
()

Не работает Калькулятор Gnome в Debian (T⌓T)

Форум — Desktop

Я обычный человек, пользуюсь Debian для повседневных задач, и тут такой поворот. Подскажите, что можно сделать? В «центре приложений» увидел отзыв от вчерашнего дня с такой же проблемой. Он запускается и зависает. скриншот

 , ,

bit_lit
()

Экспериментирую со старым планшетом

Галерея — Скриншоты

Как-то в один из выходных дней разгребал у себя барахло и наткнулся на китайское чудо света – Prestigio Visconte Quad 3GK (характеристики на фото…).

Сиё чудо досталось мне с предустановленной win10, которая с течением времени (наверно байты на распаянной флешке засохли) перестала запускаться. С удивлением обнаружил, что данная железка оборудована uefi bios и после небольшого гуглинга оказалось, что это чудо способно без проблем загружать и линукс.

Не долго думая, решил готовить загрузочную флешку с Debian, но загрузиться с неё, к сожалению, не получилось. «Не беда», подумал я и подготовил загрузочную флешку с Arch Linux. Воткнул флешку через OTG, выбрал в меню биоса нужный efi-файл, с которого нужно грузиться и вуаля, установочный образ арча в работе.
Процесс установки ничем не отличается от десктопного варианта, разве что пришлось загрузчик брать systemd-boot.
После некоторого шаманства мне удалось загрузить Арч, дальше дело дошло до настройки пользователей, сети и так далее…

Но зачем планшет, если его нельзя тыкать пальцем? Правильно, поэтому ставлю Gnome3 – наиболее подходящее DE под тыкательные дела. Ставим, запускаем GDM и…обнаруживаем, что не работает тачскрин :( Сначала полез в DMESG, где вываливается ошибка при загрузке firmware, которое отвечает за тачскрин… По итогу, на 4pda нашёлся рабочий firmware, который позволил заработать пальцетыкалке.

Пришло время ковыряний… Как и ожидалось, мне стало грустно – некрожелезо планшета хоть и тянет Арч + Гном3, но комфортно пользоваться этим добром невозможно. Один гигабайт RAM сразу забивается, остальное уходит в SWAP. Микрофризы, периодические зависания не добавляют радости. Видео воспроизводится, даже 1080p, но через пару минут планшет может зависнуть. Камера и блютуз не заработали, яркость экрана не настраивается, в гибернацию железка уходит, но не просыпается. Гироскоп отрабатывает некорректно. В остальном - всё как на десктопе.

Если писать в целом – это работает, но приятного опыта взаимодействия не принесёт. Явно не хватает производительности. Нужен большой напильник и более мощная железка.

Сейчас думаю, что делать с этим барахлом. У меня есть три варианта:

  1. Оставить и сделать из этого чуда планшет для показа погоды/воспроизвдения видео с камер наблюдения;
  2. Продать дёшево на авито;
  3. Подарить врагу :)

А вы что думаете на этот счёт?

P.S. Остальные дистры можно на этом планшете запустить благодаря замечательному решению в этой git-репе.

 , , , ,

santic
()

lua и боль производительности

Форум — Development

@LightDiver, вот пример твоего кейса и наглядный пример, что ты не то оптимизируешь, никаких регэкспов не надо, все проходится прямо. Если у тебя исходные условия - не влезаешь в ограниченную память, то это тоже решабельно.

function mylen(s,n)
    local count
    for i = 1, n do
        count = #s
    end
    return count
end

function u8( s )
    local wstring = {}
    local char = 0
    for i = 1, #s do
        local byte = s:byte(i)
        if byte < 128 then
	       char = char + 1
           wstring[char] = string.char(byte)
        elseif byte >= 194 and byte <= 244 then
            char = char + 1
            if byte <= 223 then
                wstring[char] = string.char(byte)..string.char(s:byte(i+1))
                i = i + 1
            elseif byte <= 239 then
                wstring[char] = string.char(byte)..string.char(s:byte(i+1))..string.char(s:byte(i+2))
                i = i + 2
            else
                wstring[char] = string.char(byte)..string.char(s:byte(i+1))..string.char(s:byte(i+2))..string.char(s:byte(i+3))
                i = i + 3
            end
        end
    end
    return wstring
end

function benchm(s,n)
    local wstring = {}
    for i = 1, n do
        wstring = u8( s )
    end
    return wstring
end

local text = "Привет ♥ мир!"
local wstring = u8(text)

local time = os.clock()
print(mylen(wstring, 100000)) --- <-- TABLE a hundred thousand iterations (omg!)
print("Прошло: " .. os.clock()-time) --- <-- as fast as native #s, since it IS native)

time = os.clock()
benchm(text, 100000) --- <-- Instantination consumes time, but once, need optimization
print("Прошло: " .. os.clock()-time)

print(text)
for i = 2, #wstring do --- <--- wow, ORLY? O_o
    print( wstring[i] ) --- <--- native unicode bychar
end
./test.lua 
13
Прошло: 0.002469
Прошло: 0.41051
Привет ♥ мир!
р
и
в
е
т
 
♥
 
м
и
р
!

 

Anoxemian
()

LO Calc. Не удается пометить данные как число

Форум — Desktop

Есть файл *.xlsx с данными по телефонии от стороннего сервиса. Необходимо произвести расчёт по определенным критериям. Одна из колонок с данными содержит цифровые значения, но перед данными стоит апостроф «’», который никак не убирается, так и остаётся, например, ’1,67.

Гуглил, ничего из найденных мною методов не помогает. В других версиях LO апострофа нет, но так же расчёт не производится как при текстовом виде ячейки. Помогите, пожалуйста, разобраться, в чём проблема и как её решить.
LibreOffice Version: 24.8.4.2 (X86_64)

Решение: Проблема была в разделителе целой и дробной части, поменяли шаблон выгрузки.

 ,

StellzZz
()

ffmpeg запись экрана - хочу чтобы на экране была красная рамочка - как?

Форум — General

Есть вот такой скрипт записи экрана.

  1. Подождать 2 сек пока переключимся из консоли в нужное окно
  2. Записывать 59 сек.
  3. Проиграть торжественый звук окончания.
sleep 2;
TIME="00:00:58"
ffmpeg \
  -f alsa -i default -ac 2 \
  -f x11grab -video_size 1080x1920 -framerate 30 -i :0.0+1300,400 -vf format=yuv420p -t ${TIME}  /tmp/output.mp4 -y
ffplay /home/sobaka/smooth-completed-notify-starting-alert-274739.mp3

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

О Т В Е Т

Вот это надо запихать в ПРАВИЛЬНОЕ место командной строки, где-то после -f x11grab, точно не помню:

-show_region 1

 

lesopilorama
()

Speech to text

Форум — General

Кто имеет опыт работы с новыми средствами для распознавания речи? Что порекомендуете на десктопную машину без CUDA/OpenCL? Свободное или бесплатное. Английский, русский, французский, украинский, испанский. Скорость распознавания хотя бы 1:1.

P.S. Превращать в текст звуковые файлы.

Ответ: Vosk вполне устраивает.

 

question4
()

Chimera Linux перешёл в статус беты

Новости — Linux General
Группа Linux General

Привет, ЛОР!

Вышла бета-версия достаточно интересного дистрибутива Chimera Linux. От других дистрибутивов Chimera отличается отсутствием утилит и библиотек GNU и использованием кода из систем BSD. Для сборки используются LLVM и musl с аллокатором mimalloc от Microsoft. В качестве системы инициализации поставляется Dinit. Средой рабочего стола по умолчанию является GNOME. Менеджером пакетов дистрибутива является APK (из Alpine Linux).

Chimera является бинарным дистрибутивом с готовыми сборками под архитектуры x86_64, ARM AArch64, POWER и RISC-V. Для энтузиастов также доступна сборка из исходного кода.

>>> Подробности

 , chimera,

hateyoufeel
()

Отличия C и C++

Форум — Development

Есть два эквивалентных примера:

#include <stdatomic.h>

int main() {
  int v[2], * p0 = v, * _Atomic p1 = v;
  if (p0 != p1) return 1;
  if (++p0 != ++p1) return 2;
  if (++p0 != (atomic_fetch_add_explicit(&p1, 1, memory_order_relaxed), p1)) return 3;
}

#include <atomic>
using namespace std;

int main() {
  int v[2], * p0 = v; atomic<int*> p1 = v;
  if (p0 != p1) return 1;
  if (++p0 != ++p1) return 2;
  if (++p0 != (p1.fetch_add(1, memory_order_relaxed), p1)) return 3;
}

C-версия делает return 3. Из-за того, что atomic_fetch_add_explicit(&p1, 1, memory_order_relaxed) компилируется в lock addq $0x1,-0x10(%rsp). В C++ lock addq $0x4,-0x10(%rsp) - как и должно быть, учитывает тип. Это баг какой-то или так специально сделано? Зачем?

 ,

qweururu
()

Визуализатор кода на C

Форум — Development

Хочу утилиту, похожую вот на это, но не привязанную к конкретному редактору. Хочу видеть граф вызова функций для сишного кода, с возможностью отключать неинтересные ноды, указывать интересные, и крутить граф в разные стороны. Очень хочу избежать страдания с graphviz и gtags. Лучше всего, если будет человеческий UI, который можно вертеть мышкой.

 

gaylord
()

Как ПРАВИЛЬНО запускать игровые бинарники.

Форум — Games

Как правильно запускать на основной машине, от основного юзера (с хомяком в котором ~/.ssh/id_rsa.pub например) игры, которые естественно проприетарные и иногда даже неофициальной сборки, где есть риск закладки и зловреда, но запускать их в чистой виртуалке невозможно т.к. значительно падает производительность. Заходить в другой tty, либо заводить другой компьютер для игр, это очевидные варианты, но неудобные и не всегда возможные.

  1. Как вы это делаете? Firejail? Bubblewrap?
  2. Cуществует ли компромисс между удобством, производительностью и безопасностью?

Спасибо за ответы.

 ,

cheetah111v
()

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

Форум — Development

Ну в общем сабж, если конкретно то пусть будет версия 3.2 . Из того, что пробовал: скомпилировать из сырцов - ошибка компиляции, пакеты из древних дистров - неудовлетворенные зависимости. Что получилось - сделать новое окружение в анаконде, но там минимальная версия 5.4. Что не пробовал - chroot, docker и ВМ. Все же это излишне кмк.

 , ,

einhander
()

GTK: This application can not open files.

Форум — Development

Пытаюсь написать мини-программу для определенной задачи, но нужно, чтоб программа принимала аргументы из терминала

После компиляции и запуска программы

./programm argument

выдает ошибку This application can not open files.

Сама программа работает, но аргументы не принимает, как фиксить?

#include <gtk/gtk.h>

void
createInterface(GtkApplication *app)
{
    GtkWidget *window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "Window");
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
    gtk_window_present(GTK_WINDOW(window));
}

int
main(int argc, char **argv)
{
    GtkApplication *app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
    g_signal_connect(app, "activate", G_CALLBACK(createInterface), NULL);
    g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return 0;
}

 ,

cherry
()

Приложения и утилиты, которые стоит попробовать

Статьи — Администрирование
Приложения и утилиты, которые стоит попробовать

Многие пользователи Linux с большим стажем даже не подозревают о существовании этих замечательных инструментов, которые способны облегчить им жизнь…

( читать дальше... )

 , ,

rtxtxtrx
()

Жизнь Intel Arc на Лине

Форум — Linux-hardware

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

 , ,

stom
()

YT-DLP, очевидное-невероятное

Статьи — Desktop

В последнее время ютуб затеял какую-то реорганизацию и стал убирать из некоторых своих видео формат 22 (720p, единый файл, не dash). Может я наговариваю, конечно, на ютуб, но формат best (720p) всегда был, имхо.


Оказывается есть возможность получать другую таблицу форматов, отличную от дефолтной. У yt-dlp есть параметр --extractor-arg "youtube:player_client=mediaconnect" ([youtube] Format 22 is only sometimes extracted for some videos #10206).
Дефолтная таблица форматов:

$ yt-dlp -F 'https://youtu.be/eUyr9MJnj4w' 
Extracting cookies from firefox
Extracted 1328 cookies from firefox
[youtube] Extracting URL: https://youtu.be/eUyr9MJnj4w
[youtube] eUyr9MJnj4w: Downloading webpage
[youtube] eUyr9MJnj4w: Downloading ios player API JSON
[youtube] eUyr9MJnj4w: Downloading player 5b22937f
[youtube] eUyr9MJnj4w: Downloading m3u8 information
[info] Available formats for eUyr9MJnj4w:
ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb2 mhtml 80x45        1    │                  mhtml │ images                                  storyboard
sb1 mhtml 160x90       1    │                  mhtml │ images                                  storyboard
sb0 mhtml 320x180      1    │                  mhtml │ images                                  storyboard
233 mp4   audio only        │                  m3u8  │ audio only          unknown             Default
234 mp4   audio only        │                  m3u8  │ audio only          unknown             Default
139 m4a   audio only      2 │    1.32MiB   49k https │ audio only          mp4a.40.5   49k 22k low, m4a_dash
249 webm  audio only      2 │    1.30MiB   48k https │ audio only          opus        48k 48k low, webm_dash
250 webm  audio only      2 │    1.70MiB   63k https │ audio only          opus        63k 48k low, webm_dash
140 m4a   audio only      2 │    3.51MiB  129k https │ audio only          mp4a.40.2  129k 44k medium, m4a_dash
251 webm  audio only      2 │    3.51MiB  130k https │ audio only          opus       130k 48k medium, webm_dash
602 mp4   256x144     15    │ ~  2.33MiB   86k m3u8  │ vp09.00.10.08   86k video only
394 mp4   256x144     30    │    1.68MiB   62k https │ av01.0.00M.08   62k video only          144p, mp4_dash
269 mp4   256x144     30    │ ~  4.16MiB  154k m3u8  │ avc1.4D400C    154k video only
160 mp4   256x144     30    │    1.55MiB   57k https │ avc1.4D400C     57k video only          144p, mp4_dash
603 mp4   256x144     30    │ ~  4.18MiB  154k m3u8  │ vp09.00.11.08  154k video only
278 webm  256x144     30    │    2.35MiB   87k https │ vp9             87k video only          144p, webm_dash
395 mp4   426x240     30    │    2.70MiB  100k https │ av01.0.00M.08  100k video only          240p, mp4_dash
229 mp4   426x240     30    │ ~  5.70MiB  211k m3u8  │ avc1.4D4015    211k video only
133 mp4   426x240     30    │    2.35MiB   87k https │ avc1.4D4015     87k video only          240p, mp4_dash
604 mp4   426x240     30    │ ~  7.76MiB  287k m3u8  │ vp09.00.20.08  287k video only
242 webm  426x240     30    │    3.59MiB  133k https │ vp9            133k video only          240p, webm_dash
396 mp4   640x360     30    │    5.02MiB  186k https │ av01.0.01M.08  186k video only          360p, mp4_dash
230 mp4   640x360     30    │ ~ 11.41MiB  421k m3u8  │ avc1.4D401E    421k video only
134 mp4   640x360     30    │    4.13MiB  153k https │ avc1.4D401E    153k video only          360p, mp4_dash
18  mp4   640x360     30  2 │ ≈  7.64MiB  282k https │ avc1.42001E         mp4a.40.2       44k 360p
605 mp4   640x360     30    │ ~ 15.03MiB  555k m3u8  │ vp09.00.21.08  555k video only
243 webm  640x360     30    │    6.06MiB  224k https │ vp9            224k video only          360p, webm_dash
397 mp4   854x480     30    │    8.40MiB  310k https │ av01.0.04M.08  310k video only          480p, mp4_dash
231 mp4   854x480     30    │ ~ 15.17MiB  561k m3u8  │ avc1.4D401F    561k video only
135 mp4   854x480     30    │    6.09MiB  225k https │ avc1.4D401F    225k video only          480p, mp4_dash
606 mp4   854x480     30    │ ~ 20.80MiB  769k m3u8  │ vp09.00.30.08  769k video only
244 webm  854x480     30    │    8.50MiB  314k https │ vp9            314k video only          480p, webm_dash
398 mp4   1280x720    30    │   14.51MiB  536k https │ av01.0.05M.08  536k video only          720p, mp4_dash
232 mp4   1280x720    30    │ ~ 24.57MiB  908k m3u8  │ avc1.4D401F    908k video only
136 mp4   1280x720    30    │   11.09MiB  410k https │ avc1.4D401F    410k video only          720p, mp4_dash
609 mp4   1280x720    30    │ ~ 31.59MiB 1167k m3u8  │ vp09.00.31.08 1167k video only
247 webm  1280x720    30    │   13.61MiB  503k https │ vp9            503k video only          720p, webm_dash
399 mp4   1920x1080   30    │   24.33MiB  899k https │ av01.0.08M.08  899k video only          1080p, mp4_dash
270 mp4   1920x1080   30    │ ~ 73.64MiB 2721k m3u8  │ avc1.640028   2721k video only
137 mp4   1920x1080   30    │   39.45MiB 1458k https │ avc1.640028   1458k video only          1080p, mp4_dash
614 mp4   1920x1080   30    │ ~ 53.22MiB 1967k m3u8  │ vp09.00.40.08 1967k video only
248 webm  1920x1080   30    │   26.78MiB  990k https │ vp9            990k video only          1080p, webm_dash
616 mp4   1920x1080   30    │ ~131.47MiB 4858k m3u8  │ vp09.00.40.08 4858k video only          Premium
400 mp4   2048x1152   30    │   60.94MiB 2252k https │ av01.0.08M.08 2252k video only          1080p, mp4_dash
620 mp4   2048x1152   30    │ ~151.23MiB 5589k m3u8  │ vp09.00.50.08 5589k video only
271 webm  2048x1152   30    │   82.90MiB 3063k https │ vp9           3063k video only          1080p, webm_dash

Новая таблица форматов с единым файлом/потоком для 720p (и 1080p):

$ yt-dlp -F 'https://youtu.be/eUyr9MJnj4w' --extractor-arg "youtube:player_client=mediaconnect"
Extracting cookies from firefox
Extracted 1329 cookies from firefox
[youtube] Extracting URL: https://youtu.be/eUyr9MJnj4w
[youtube] eUyr9MJnj4w: Downloading webpage
[youtube] eUyr9MJnj4w: Downloading mediaconnect player API JSON
[youtube] eUyr9MJnj4w: Downloading m3u8 information
[info] Available formats for eUyr9MJnj4w:
ID  EXT   RESOLUTION FPS CH │  FILESIZE   TBR PROTO │ VCODEC        VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27        0    │                 mhtml │ images                                storyboard
sb2 mhtml 80x45        1    │                 mhtml │ images                                storyboard
sb1 mhtml 160x90       1    │                 mhtml │ images                                storyboard
sb0 mhtml 320x180      1    │                 mhtml │ images                                storyboard
140 m4a   audio only      2 │   3.51MiB  129k https │ audio only        mp4a.40.2  129k 44k medium, m4a_dash
160 mp4   256x144     30    │   1.55MiB   57k https │ avc1.4d400c   57k video only          144p, mp4_dash
91  mp4   256x144     30    │ ~ 4.16MiB  154k m3u8  │ avc1.4d400c       mp4a.40.5
133 mp4   426x240     30    │   2.35MiB   87k https │ avc1.4d4015   87k video only          240p, mp4_dash
92  mp4   426x240     30    │ ~ 5.70MiB  211k m3u8  │ avc1.4d4015       mp4a.40.5
134 mp4   640x360     30    │   4.13MiB  153k https │ avc1.4d401e  153k video only          360p, mp4_dash
93  mp4   640x360     30    │ ~11.41MiB  421k m3u8  │ avc1.4d401e       mp4a.40.2
18  mp4   640x360     30  2 │ ≈ 7.64MiB  282k https │ avc1.42001E       mp4a.40.2       44k 360p
135 mp4   854x480     30    │   6.09MiB  225k https │ avc1.4d401f  225k video only          480p, mp4_dash
94  mp4   854x480     30    │ ~15.17MiB  561k m3u8  │ avc1.4d401f       mp4a.40.2
136 mp4   1280x720    30    │  11.09MiB  410k https │ avc1.4d401f  410k video only          720p, mp4_dash
95  mp4   1280x720    30    │ ~24.57MiB  908k m3u8  │ avc1.4d401f       mp4a.40.2
137 mp4   1920x1080   30    │  39.45MiB 1458k https │ avc1.640028 1458k video only          1080p, mp4_dash
96  mp4   1920x1080   30    │ ~73.64MiB 2721k m3u8  │ avc1.640028       mp4a.40.2

Как скачивать 720p (формат единым файлом/потоком):

$ yt-dlp -f 95 'https://youtu.be/eUyr9MJnj4w' --extractor-arg "youtube:player_client=mediaconnect" 

Как воспроизводить 720p (формат единым файлом/потоком):

$ mpv --ytdl-format=95 'https://youtu.be/eUyr9MJnj4w' --ytdl-raw-options=extractor-arg="youtube:player_client=mediaconnect" 


Кроме того:

  • Для mpv можно создать профиль [youtube] в mpv.conf, где прописать условие срабатывания на ютубных ссылках, типа profile-cond=path:match('youtu%.?be') ~= nil или profile-cond=path:find('youtu%.?be') (1).
    И добавив в профиль параметр ytdl-raw-options=extractor-arg="youtube:player_client=mediaconnect" и ytdl-format=95/best.
  • Для yt-dlp, чтобы при наборе команды в терминале мучительно долго не вспоминать указанную в начале заметки длиннющую опцию, можно создать алиас. В конфиге yt-dlp прописываем, как пример, --alias 95f '-f 95 --extractor-arg="youtube:player_client=mediaconnect"'. Теперь, чтобы скачать, пишем yt-dlp --95f 'https://youtu.be/eUyr9MJnj4w'.


Для чего все это надо?

  • минус издержки на склеивание dash-потоков видео и аудио средствами ffmpeg;
  • возможность отправлять ссылку на стандартный вывод (stdout) какого-либо плеера, например vlc;
  • плюс, оказывается, и для 1080p существует подобный формат единого файла.
  • лучшая отзывчивость при перемотке во внешнем плеере (возможно верно для всех hls и не зависит от таблицы форматов)

 ,

krasnh
()