Как из терминала запустить vlc +video +audio

Аудио и видео 1390 просм. 13 сообщ.

Чуть подробнее:
с помощью youtube-dl -g , получаю 2 прямые ссылки на видео и аудио, нужно скормить их плееру vlc.
Как это сделать через GUI = я знаю, НО мне нужно именно из терминала.

MPV не предлагайте - всё работает, только нужно ставить youtube-dl с github.com
потому что в репах (дебьяна,бубунты и минта) их ещё так и не обновили ;)

Для vlc я пользовал скрипт ~/.local/share/vlc/lua/playlist/youtube.lua
но недавно на ютуб опять перепилили API, поэтому со старым скриптом не прокатывает, с и с ним , можно было смотреть только 720p :(

Поэтому мне интересно как это сделать в vlc + youtube-dl ?

Решение:
Вот рабочий скрипт, как нибудь его обзываем,делаем исполняемым,в браузере, через дополнение Open With запускаем его на странице youtube (в качестве аргумента, он принимает ссылку на видео)

смотрим youtube 1080p 60fps в VLC , (видеокарта GT710+проц C2D E8500)


MP4 AVC при 60 кадрах вообще не грузит CPU :) ,
WEBP VP9 , видюха обрабатывать не умеет , поэтому 60-90% CPU ,
даже 2560x1440 30Hz - показывает, а 2560x1440 60Hz уже не вывозит,
но у меня монитор всего 2560x1080 60Hz , поэтому 1440 - это уже лишнее :o
#!/bin/bash

### Вариант с логированием просмотренного: ### дата_время ,название, ссылка youtube .
IFS=$'\n' x=($(youtube-dl -f "(bestvideo[height<=1440]/bestvideo[height<=1080][fps<=30])+bestaudio/best" -eg $(echo "$@" | cut -d'&' -f1) )) && 
echo -e "### $(date +%Y.%m.%d_%H:%M:%S)\n## ${x[0]}\n$@\n"  >> $HOME/Videos/yt.log && 
vlc --meta-title "${x[0]}" "${x[1]}" --input-slave "${x[2]}"

### Ещё вариант
#youtube-dl -f "bestvideo[height<=1080]+bestaudio/best" --get-filename -o '"%(title)s"' -g $@ | 
#awk 'BEGIN{FS=RS;RS=""}{print $1" --input-slave "$2" --meta-title "$3}' | xargs vlc

### Ещё вариант
#readarray -t x <<< $(youtube-dl -f "bestvideo+bestaudio/best" -eg "$@" ) && 
#vlc --meta-title "${x[0]}" "${x[1]}" --input-slave "${x[2]}"

@svm,
если ссылаться на документацию, то можно подсмотреть нужные параметры, открыв Инстументы>Сообщения и выставив уровень verbosity в 2

@svm,
всё проще, чем писал выше: vlc 'VIDEO_DIRECT_LINK' --input-slave 'AUDIO_DIRECT_LINK'

jerky:

@svm,
всё проще, чем писал выше: vlc 'VIDEO_DIRECT_LINK' --input-slave 'AUDIO_DIRECT_LINK'

Большое спасибо тебе .
Спрашивал и на тостере и на лоре,
все начинают советовать MPV
Я им - вы вопрос то хоть читали ? там всё русским по белому :D (вопрос именно про VLC + проставлены тэги cvlc,vlc)
или...
во самый гениальный ответ ))"
я, конечно, не vlc'олог, но чем не устроит
vlc $url

?
с какими-нибудь ключами?
"

ps
У меня ума не хватило открыть расширенный help vlc -H
Я же открывал vlc --help , поэтому не увидел, а если бы и увидел, то не факт, что сообразил бы для чего эта опция :(

как вариант, можно не ставить расширений, а скармливать выделенную ссылку через xclip -o
повесил на хоткей скрипт, полностью приводить не буду, потому что не vlc
$(xclip -o -selection clipboard)"

jerky:

...

Помоги пожалуйста разобраться с выбором форматов в youtube-dl
Не получается чтобы с одним скриптом открывалось любое видео.
Нужно видео не больше 1080 + не больше 30fps + лучшее аудио.
К примеру: вот три ссылки, на видео разного качества, 1-я из них не хотит работать .ЧЯДНТ? :(
https://www.youtube.com/watch?v=VtWIn7ch708
https://www.youtube.com/watch?v=0YONAP39jVE
https://www.youtube.com/watch?v=jP3ceURvIYc

VLC открывается и вылетает с ошибкой Segmentation fault
$ vlc++ https://www.youtube.com/watch?v=VtWIn7ch708
VLC media player 3.0.9.2 Vetinari (revision 3.0.9.2-0-gd4c1aefe4d)
[000055e500c86670] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
qt5ct: using qt5ct plugin
qt5ct: D-Bus global menu: no
qt5ct: D-Bus system tray: yes
[00007f7970045a30] mp4 demux: Fragment sequence discontinuity detected 1 != 0
/home/svm/bin/vlc++: line 2: 129127 Segmentation fault      vlc --meta-title "${x[0]}" "${x[1]}" --input-slave "${x[2]}"

код скрипта vlc++
#!/bin/bash
IFS=$'\n' x=($(youtube-dl -f "bestvideo[ext=mp4][height<=1080][fps<=30]+bestaudio/best" -eg $@)) && vlc  --meta-title "${x[0]}" "${x[1]}" --input-slave "${x[2]}"

@svm,
У меня завелись все три указанные видео этим же скриптом.
Правда первое видео лагает на первых минутах.
Версия vlc - 3.0.13.
> mp4 demux: Fragment sequence discontinuity detected 1 != 0
это проблема плеера, а не ссылок ( не даром во всех интернетах советуют mpv :) )
Такое его поведение у себя наблюдаю после неудачных обновлений, помогает откат на предыдущую версию.

Спойлер
если придираться к скрипту, то:
после определения IFS точку с запятой лучше убрать, тогда действовать значение этой переменной будет только на следующую команду, что и требуется.
индексы массива лучше заключить в двойные кавычки (но это в том случае, если убрать точку с запятой после IFS)
опция -s не нужна, т.к. следующие -e и -g тоже "тихие" и ничего на диск не пишут
есть ли смысл задавать конретный контейнер в опции формата? я бы убрал '[ext=*]'
знак вопроса тоже бы убрал; он нужен, если формат не определён, а здесь определён как 'bestvideo'

jerky:

...

Спасибо.
Сбросил конфиги VLC , я их уже давно не менял, бог знает, что я там успел понакрутить))
Стало луше.
Скрипт поправил
Ещё есть подобный вариант на AWK
#!/bin/bash

#IFS=$'\n' x=($(youtube-dl -f "bestvideo[height<=1080]+bestaudio/best" -eg "$@" )) && vlc  --meta-title "${x[0]}" "${x[1]}" --input-slave "${x[2]}"

youtube-dl -f "bestvideo[ext=mp4][height<=1080]+bestaudio/best" -eg "$@" | awk 'BEGIN{FS=RS;RS=""}{print $2" --input-slave "$3" --meta-title \""$1"\"" }' | xargs vlc

@svm,
дабы использовать сторонних утилит по минимуму, можно сделать так:

readarray -t yt_response <<< "$(youtube-dl <нужные опции>)"
vlc --meta-title "${yt_response[0]}" "${yt_response[1]}" --input-slave "{yt_response[2]}"

jerky:

...

можно и так, но забыл/исправь ${yt_response[2]}
как по мне, 1-вый вариант проще/читаемей (я им и пользуюсь, а с awk и твой, оставил в скрипте как пример(может пригодиться ещё где нибудь)

да, пропустил '$', но исправить не могу, я не зарегестрирован :)

BigOrange:


как вариант, можно не ставить расширений, а скармливать выделенную ссылку через xclip -o

Не удобно - много лишних/ненужных телодвижений ))
Проще в два клика из контекстного меню открывать.

@svm, скопировать ссылку и хоткей.

Написать ответ…