LINUX.ORG.RU

Сообщения toyo-chi

 

mpv, youtube-dl и чуть более изощрённая логика выбор формата

Форум — Desktop

Наверное, все уже научились смотреть видео из интернета при помощи прекрасной связки mpv и youtube-dl? А теперь давайте решим задачу посложнее!

Какую строчку выбора формата необходимо вписать в mpv.conf, чтобы получаемое видео ОДНОВРЕМЕННО соответствовало обоим критериям:

  • Разрешение по вертикали: 720 или меньше;
  • Видеокодек: не VP9 и не AV1.

Вот строчка, написанная с опорой на самые разнообразные примеры и источники:

ytdl-format='bestvideo[height<=?720][vcodec!=?vp9]+bestaudio/best[height<=?720]'

И она работает так, как и задумано. Если только в источнике нет потока AV1. И как же тогда ещё и его исключить? Какие только не предпринимались попытки её дополнить — всякий раз либо AV1 вылезает, либо 1080 и больше, либо вообще происходит откат на best в 360p. В багтрекере, толком ничего не объясняя, на это говорят «шли бы вы в FAQ». Но и там ничего нет про двойное исключение! Полная логика языка выбора форматов из youtube-dl остаётся загадкой. Вся надежда только на всемогущих ЛОР-экспертов!

 ,

toyo-chi
()

OverlayFS и сетевые файловые системы

Форум — General

Есть намерение монтировать объединённое дерево каталогов из удалённой сетевой ФС и расположенного локально RW-слоя поверх неё. Перво-наперво пробуем смонтировать удалённую ФС через NFS. В документации на OverlayFS сказано, что использовать NFS (и следует полагать, что и другие сетевые ФС тоже) в качестве upper не получится, но про lower наоборот сказано, что он может располагаться на какой угодно ФС. Однако при попытке использовать каталог со смонтированной сетевой ФС как lowerdir для OverlayFS начинаются странности.

В случае с NFS — файлы и каталоги, которые приходят из NFS-ветки, отказываются перемещаться и переименовываться.

$ sudo mount -t nfs4 -o nfsvers=4.2 remote.local:/remotedir /mnt/net/remote
$ sudo mount -t overlay overlay -o \
> lowerdir=/mnt/net/remote,\
> upperdir=/home/user/.upper_for_remote,\
> workdir=/home/user/.workdir_for_remote \
> /home/user/merge
$ cd ~/merge
$ mv ./catalogue ./rename_catalogue
mv: невозможно переместить './catalogue' в './rename_catalogue': Неподдерживаемая операция

Спрашивается, для кого вообще подключены upperdir и workdir? В самой смонтированной NFS всё переименовывается как следует, то есть проблема не с правами из-за странностей NFS idmap. (А победить их было непросто...) В /home смонтирован отдельный раздел, если это важно.

Ну хорошо, удалённую ФС можно смонтировать и по SSHFS. К тому же в ней есть и встроенная авторизация, и понятный IDmapping.

Вот только и с ней не всё так просто. OverlayFS с SSHFS в качестве lower вообще откажется монтироваться, если не указать опцию user_allow_other в /etc/fuse.conf и не смонтировать саму SSHFS с -o allow_other. Без этих опций FUSE даже руту будет отказывать в чтении смонтированного содержимого.

$ sshfs remoteuser@remote.local:/mnt/remote /home/user/net/sshfs_remote/ -o idmap=user
$ sudo mount -t overlay overlay -o [опции...]\
> /home/user/merge
mount: /home/user/merge: cannot mount overlay read-only.
$ sudo ls ~/net/remote/
ls: невозможно получить доступ к '/home/user/net/sshfs_remote/': Отказано в доступе

(И кстати, в случае с NFS на сервере необходимо экспортировать каталог с no_root_squash, иначе будет точно такая же ошибка.)

Но это не беда, указываем эти опции и перемонтируем SSHFS. Отлично, теперь root может читать содержимое смонтированной ФС. Однако монтироваться OverlayFS и в этом случае по-прежнему не станет, но ошибка уже становится другой:

mount: /home/user/merge: mount(2) system call failed: Устаревший дескриптор файла.

Ещё более странно. И что с таким вообще делать в общем случае?

Но в целом и это ещё не беда. Эту ошибку можно обойти при помощи немного странного workaround: смонтировать в качестве ещё одной lowerdir ещё одну OverlayFS, полностью составленную из каталогов на той же ФС, куда смонтирован объединённый каталог. Обычный каталог почему-то не подходит, с ним будет точно такая же ошибка про устаревший дескриптор.

-o lowerdir=/home/user/another_overlayfs:/home/user/net/sshfs_remote

Ну наконец-то смонтировалось! Хоть и выглядит это всё немного странно. Однако это ещё не всё. Остались небольшие косметические недоработки. В получившемся объединённом каталоге Dolphin может добавлять теги только к тем файлам и каталогам, метаданные которых уже скопированы в верхний слой. Например, для этого можно совершить временное переименование над желаемым файлом или каталогом. Ну и вручную сделать attr -s тоже можно, но Dolphin не понимает, что к этим файлам тоже можно добавлять xattrs.

(Кстати говоря, появившаяся в 4.19 возможность копирования в верхний слой только метаданных пришлась тут очень к месту, даже безотносительно манипуляций с xattrs. А то даже переименовать файл без полного copy_up было невозможно.)


Так всё-таки какой же способ монтировать сетевую ФС в нижний слой самый правильный? Что не хватает OverlayFS для перемещения и переименования в варианте с NFS? Как монтировать SSHFS без второго вспомогательного lower? И возможно ли как-нибудь обойти эту необходимость в предварительном metadata_copy_up, чтобы Dolphin смог добавлять теги к файлам сразу?

Ах да, дистрибутив — Arch, ядро — 4.20.0, если это важно.

[Тема вроде бы как на стыке Admin и Desktop — значит, отправляется в General. Логично?]

 , , ,

toyo-chi
()

RSS подписка на новые темы