LINUX.ORG.RU

mpv: плейлисты ютуба

 , ,


1

2

Как скормить mpv напрямую плейлист вида

https://youtube.com/playlist?list=PLBLA-BLA-BLA
mpv как-бы берет этот плейлист, но видит и воспроизводит только первый трек.

yt-dlp без проблем видит (и скачивает) весь плейлист.

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

Как его заставить хавать ютубовские плейлисты?

★★★★

Последнее исправление: Chord (всего исправлений: 1)

  • apt install yt-dlp jq mpv lua
  • touch ~/.local/bin/mpvl && chmod +x ~/.local/bin/mpvl

Этот код сюда ~/.local/bin/mpvl

#!/usr/bin/env lua
--------------------------------------------------------------------------------------
local playlist = {};
local url  = assert(arg[1])
local ytd  = io.popen("yt-dlp -j --flat-playlist '"..url.."' 2>/dev/null| jq -r .url")
--------------------------------------------------------------------------------------
table.insert(playlist,'#EXTM3U\n') -- m3u заголовок
for line in ytd:lines() do
    table.insert(playlist,("\n#EXTINF:-1,'%s'\n%s"):format(line,line)) -- m3u элемент
end
--------------------------------------------------------------------------------------
playlist = table.concat(playlist) -- схлопнуть в строку
--------------------------------------------------------------------------------------
if not playlist:find('https')  then -- если нет списка ссылок воспроизвести как есть
    os.execute("mpv '"..url.."'")
else
    io.popen('mpv - ','w'):write(playlist)
end
--------------------------------------------------------------------------------------

Такой плейлист

  • mpvl "https://www.youtube.com/watch?v=jdUXfsMTv7o&list=PLdImBTpIvHA1xN1Dfw2Ec5NQ5d-LF3ZP5"

Такой плейлист

  • mpvl https://www.youtube.com/playlist?list=PL4FxkpKzI-TrFsTuuYnS3EvwSXmqi9Mun
LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 6)

Стоп блин! Нахер я всё это делал?

Так

  • mpv https://www.youtube.com/playlist?list=PL4FxkpKzI-TrFsTuuYnS3EvwSXmqi9Mun

Всё воспроизводится!

UDP: А вот фигу там вот так

  • mpv "https://www.youtube.com/watch?v=jdUXfsMTv7o&list=PLdImBTpIvHA1xN1Dfw2Ec5NQ5d-LF3ZP5

Не воспроизводится. Значит не зря писал. Но странно, у меня получается всё наоборот.
Если что

dron@gnu:~$ mpv --version
mpv 0.36.0 Copyright © 2000-2023 mpv/MPlayer/mplayer2 projects
 built on UNKNOWN
libplacebo version: v6.338.1
FFmpeg version: 6.0-7+b1
FFmpeg library versions:
   libavutil       58.2.100
   libavcodec      60.3.100
   libavformat     60.3.100
   libswscale      7.1.100
   libavfilter     9.3.100
   libswresample   4.10.100
dron@gnu:~$ 


LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от shdown

Как выяснилось, mpv некоторые ссылки не раскрывает как плейлист. У ТС такое раскрывает (а у меня раскрывает)

А у меня такое

Показывает только первое видео и всё

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от shdown

Ты реально не понимаешь, что у mpv есть список треков и по ним можно перемещаться клавишами < и >?

Эти кнопки неактивные. И список состоит только из одного трека (первого). Я же написал в ОП, что видит только один трек. mpv прям так и пишет в нижней панели: 1/1. Т.е. первый трек из одного.

Chord ★★★★
() автор топика
Последнее исправление: Chord (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Твоя правда. Я попытался скормить последнюю ссылку mpv --ytdl, а он мне вывел в терминал это:

[cplayer] I’d just like to interject for a moment. What you’re refering to as Linux, is in fact, GNU/LInux, or as I’ve recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.
[cplayer] 
[cplayer] To address some common comments:
[cplayer] 1) I know it's hard to read the text at the 30 second mark. I was still learning to edit when making this video
[cplayer] 2) "what OS/distro is ______?" The installer is for fedora, the next one is a bunch of rices. This video was made in kdenlive on Ubuntu. Don't confuse the Distro for the window manager.
[cplayer] 3) It's very cool that you use arch btw
[cplayer] 4) "I want to use Linux but _____" That's okay! As long as you have an enjoyable and productive computing experience that's what matters.
[cplayer] Running hook: ytdl_hook/on_preloaded
[timeline] select track 0
[timeline] select track 1

shdown
()
Ответ на: комментарий от krasnh

mpv читая поток из stdin ссылки в m3u сам оборачивает в одинарные кавычки. Если их добавить при сборке m3u плейлиста то он ссылки не открывает как как там будет уже ''https://видива''

Ну я так понял, так как если добавить, ругается и выходит

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Chord

Раньше, чтобы проигрывался плейлист, я прописывал ytdl-raw-options=yes-playlist= в mpv.conf. Но вот у меня mpv 0.35.0 и уже не надо и я его закоментировал.

Может у тебя mpv старый? Сейчас последний 0.37.

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Там так и задумано. Например, хочешь воспроизвести лишь одну ссылку из плейлиста на 100-200 роликов, перетаскиваешь именно его ссылку на mpv, и именно его и только его и воспроизводишь.

А если нужен сам плейлист, то нужен другой URL (с */playlist?list=*) или главная превьюшка плейлиста.

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 1)
Ответ на: комментарий от Chord

Так, ты меня запутал вторая ссылка тоже плейлист, трек из плейлиста. По этой ссылке получается лист всего плейлиста, но mpv показывает только первое видео. Через скрипт показывает весь плейлист. У тебя короче mpv вообще никакие плейлисты не кажет, ни прямые, ни такие.

Вот вывод второй ссылки, вполне себе плейлист

dron@gnu:~/Рабочий-стол$ yt-dlp -j --flat-playlist 'https://www.youtube.com/watch?v=jdUXfsMTv7o&list=PLdImBTpIvHA1xN1Dfw2Ec5NQ5d-LF3ZP5' 2>/dev/null| jq -r .url
https://www.youtube.com/watch?v=jdUXfsMTv7o
https://www.youtube.com/watch?v=Oo-cIGVaOYE
https://www.youtube.com/watch?v=epH4QvLUXlY
https://www.youtube.com/watch?v=cTxCpDn08D0
https://www.youtube.com/watch?v=ezUoiaoQCTs
https://www.youtube.com/watch?v=MpDdGOKZ3dg
https://www.youtube.com/watch?v=CDeG4S-mJts
https://www.youtube.com/watch?v=upCemv2UaLc
https://www.youtube.com/watch?v=qe6UKPsppBQ
https://www.youtube.com/watch?v=hbhoAr8GV98
https://www.youtube.com/watch?v=k-fVjHzxKzo
https://www.youtube.com/watch?v=Kg7JHzk0DXM
https://www.youtube.com/watch?v=NOqkutYYfpA
https://www.youtube.com/watch?v=Og9fBTFRhDk
dron@gnu:~/Рабочий-стол$ 

Ибо list=PLdImBTpIvHA1xN1Dfw2Ec5NQ5d-LF3ZP5

UDP: Да, подсказали что логика воспроизведения иная просто. Ладно

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Ответ на: комментарий от krasnh

mpv у меня 0.37.

Попробовал прописать

ytdl-raw-options=yes-playlist= 
в ~/.config/mpv.conf - ничего не дает. То ли не туда прописал, то ли после = должно ещё что-то быть. В общем не помогает

Chord ★★★★
() автор топика
Ответ на: комментарий от krasnh

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

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Chord

А запусти mpv с --no-config и плейлистом, может какие левые параметры прописаны.

Вот мой пример воспроизведения плейлиста выложенного выше:

$ mpv --no-config 'https://www.youtube.com/playlist?list=PL4FxkpKzI-TrFsTuuYnS3EvwSXmqi9Mun'

Playing: https://www.youtube.com/watch?v=6l54bQEsytM
 (+) Video --vid=1 (*) (h264 1280x720 60.000fps)
 (+) Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz)
File tags:
 Uploader: blogdron
 Channel_URL: https://www.youtube.com/channel/UCM1JldYdCaHdN9jAzilGmZA
AO: [pipewire] 48000Hz stereo 2ch floatp
VO: [gpu] 1280x720 yuv420p
AV: 00:00:02 / 00:22:09 (0%) A-V:  0.000 Cache: 7.0s/876KB

Playing: https://www.youtube.com/watch?v=prmoa3AlVl8
AV: 00:00:02 / 00:22:09 (0%) A-V:  0.000 Cache: 7.0s/876KB
 (+) Video --vid=1 (*) (h264 1280x720 60.000fps)
 (+) Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz)
File tags:
 Uploader: blogdron
 Channel_URL: https://www.youtube.com/channel/UCM1JldYdCaHdN9jAzilGmZA
AV: 00:00:01 / 00:28:46 (0%) A-V:  0.000 Cache: 0.9s/304KB

Playing: https://www.youtube.com/watch?v=mbVnc_nXUgQ
AV: 00:00:01 / 00:28:46 (0%) A-V:  0.000 Cache: 0.9s/304KB
 (+) Video --vid=1 (*) (h264 1280x720 60.000fps)
 (+) Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz)
File tags:
 Uploader: blogdron
 Channel_URL: https://www.youtube.com/channel/UCM1JldYdCaHdN9jAzilGmZA
AV: 00:00:01 / 00:20:09 (0%) A-V:  0.000 Cache: 2.4s/238KB

Playing: https://www.youtube.com/watch?v=sopDMYfvpbs
 (+) Video --vid=1 (*) (h264 1280x720 60.000fps)
 (+) Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz)
File tags:
 Uploader: blogdron
 Channel_URL: https://www.youtube.com/channel/UCM1JldYdCaHdN9jAzilGmZA
AV: 00:00:01 / 00:18:27 (0%) A-V:  0.000 Cache: 1.1s/358KB


Exiting... (Quit)

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 2)
Ответ на: комментарий от Chord

У меня старее 2023.11.16 а он список вообще формирует? Что покажет?

yt-dlp -j --flat-playlist 'https://www.youtube.com/playlist?list=PL4FxkpKzI-TrFsTuuYnS3EvwSXmqi9Mun' 2>/dev/null| jq -r .url

Может сломали

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

не надо по текущей ссылке собирать спец ссылку именно на плейлист

Короче, я никогда похоже не понимал значение ytdl-raw-options=yes-playlist=. Раскомментировал его в mpv.conf и получил нужное тебе действие, без всяких доп. движений.

Можешь проверить на https://www.youtube.com/watch?v=jdUXfsMTv7o&list=PLdImBTpIvHA1xN1Dfw2Ec5NQ5d-LF3ZP5, если тебе важно такое поведение mpv.

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 3)
Ответ на: комментарий от krasnh

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

Chord ★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Ну да, мышкой можно, для этого там и существует псевдоинтерфейс.

А вообще, желательно заглянуть сюда, там скриптов, расширяющих функционал mpv, выше крыши.
Сам использую только lua, но там есть и js.

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 2)
Ответ на: комментарий от krasnh

Все бы хорошо, но у Smplayer пока еще проблемы с Wayland
Например, аппаратное ускорение (cuda/vaapi) работает только тогда, когда видео отдельным окном от интерфейса (в настройках снята галочка wayland support)

Myp3ik ★★
()
Ответ на: комментарий от MOPKOBKA

Да вряд ли.
Та же Haruna работает нормально, видео воспроизводится в самом окне

diff --git a/src/core.cpp b/src/core.cpp
index 7dd6b7b6d..13f19884b 100644
--- a/src/core.cpp
+++ b/src/core.cpp
@@ -1765,7 +1765,7 @@ void Core::startMplayer( QString file, double seek ) {
 		}
 		if (proc->isMPV()) {
 			if (pref->vo.startsWith("gpu")) {
-				proc->setOption("gpu-context", "x11egl");
+				proc->setOption("gpu-context", "x11vk");
 			}
 		}
 	}

Короче, добавил патч в ebuild SMPlayer'a, теперь в Вяленом норм.
И с cuda, и в одном окне

Myp3ik ★★
()