Форум
Как из терминала запустить vlc +video +audio
Чуть подробнее:
с помощью 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)
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
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 , поэтому не увидел, а если бы и увидел, то не факт, что сообразил бы для чего эта опция :(
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=jP3ceURvIYcVLC открывается и вылетает с ошибкой 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