Как выбрать максимальное разрешение и указать формат/кодек в yt-dlp?

Я часто использую yt-dlp, и мне он нравится. Но есть проблема, которую я нигде не могу найти документированной.

      yt-dlp -v -f "bv*[height<=720]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"

Найдем лучшее видео, разрешение которого не превышает 720.

      yt-dlp -v -f "bv*[ext=mp4]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"

найдет лучшее видео типа MP4 независимо от разрешения.

Я хотел бы выбрать как расширение/кодек (avc1) и ограничьте высоту.

      yt-dlp -v -f "bv*[height<=720,ext=mp4]+ba*[ext=m4a]" -N 4 "https------"

казалось бы, имеет смысл, но это терпит неудачу;

Синтаксическая ошибка: неверная спецификация фильтра «высота <= 720, ext = mp4».

Я пробовал разные символы, чтобы разделить два фильтра (; & +и т. д.), но не может найти правильный синтаксис, если он существует. Я провел множество поисков в Интернете, но не нашел примера совместного использования двух квалификаторов, таких как максимальное разрешение и тип файла.

Я также попробовал:

      yt-dlp -v -f "bv*[height<=720]+bv*[ext=mp4]+ba*[ext=m4a]" -N 4 "http----"

который работает без ошибок, но используется только первый фильтр «BV», устанавливающий максимальную высоту. Похоже, что второй фильтр, определяющий MP4, игнорируется.

Итак, мои вопросы: можно ли указать два или более фильтров для видео, или yt-dlp этого просто не делает?

Если это должно быть возможно, может ли кто-нибудь предоставить правильный синтаксис? Или указать на конкретную веб-страницу, на которой написано, что это такое?

1 ответ

Согласно документации , это должно работать:

      yt-dlp -v -f "bv*[height<=720][ext=mp4]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"

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

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

      yt-dlp -v -f "bv*[height<=720][ext=mp4][vcodec^=avc1]+ba*[ext=m4a]" -N 4 "https://www.youtube.com/xxx"

^=означает «начинается с», посколькуavc1кодеки, кажется, имеют какой-то дополнительный хеш или что-то еще после.в списке.

Другие вопросы по тегам