LINUX.ORG.RU

Исправление отсутствующего звука mpv + ytdl без возни с пересборками

 , ,


0

3

Последний месяц mpv + yt-dlp перестал видеть звук во всех форматах с раздельными потоками (т.е. работают 18 и 22 только).

Пишет вот такую ошибку

[ytdl_hook] EDL doesn't support fragmentswithout duration with MP4 DASH 
Error in EDL.
EDL: source file 'edl://!mp4_dash,init=(...)' has unknown duration.

Это исправлено этим коммитом mpv. Не смотря на то, что это lua-скрипт, при сборке он засовывается куда-то в бинарник и просто так его не отредактировать. Устанавливать новую (ещё даже не релизную, вроде) версию mpv не всем удобно (в debian testing например версия от января), а возиться с пересборкой тоже не хочется.

Решение: берём исправленный файл ytdl_hook.lua (я скачал исходники apt-get source mpv и внёс в них указанный патч), кладём как ~/.config/mpv/scripts/ytdl_hook.lua и всё работает.

Строчка ошибки

[ytdl_hook] EDL doesn't support fragmentswithout duration with MP4 DASH
так и осталась, но Error in EDL и простыня после неё исчезли, звук появился.

Добавление: ещё надо отключить встроенный ytdl_hook.lua, иначе он рандомно переключается с новым и звук работает только в половине случаев.

В файл ~/.config/mpv/mpv.conf надо вписать строку

ytdl=no

★★★★★

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

Забавно, обратил внимание только после этой темы. ) Но у меня прописан в конфигах best, поэтому простительно.

я скачал исходники apt-get source mpv и внёс в них указанный патч

Кому понадобится, исправленный лежит здесь.

upd. Правда мне еще приходится прописывать --ytdl=no, чтобы выключить встроенный ytdl_hook.lua.

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

Было тоже самое, спасает opus или игнор vp9, ~/.config/mpv/mpv.conf:

[1080p]
ytdl-format=bestvideo[height<=?1080][fps<=?30][vcodec!=vp9]+bestaudio/best

[720p]
ytdl-format=bestvideo[height<=?720][fps<=?30][vcodec^=opus]+bestaudio/best

[480p]
ytdl-format=bestvideo[height<=?480][fps<=?30][vcodec!=vp9]+bestaudio/best

[360p]
ytdl-format=bestvideo[height<=?360][fps<=?30][vcodec!=vp9]+bestaudio/best

mpv --profile=720p $url
dmitry237 ★★★★
()
Ответ на: комментарий от krasnh

upd. Правда мне еще приходится прописывать --ytdl=no, чтобы выключить встроенный ytdl_hook.lua.

И правда. Если не прописать - то 50% как повезёт, хук рандомно либо встроенный либо новый действует.

Но у меня прописан в конфигах best, поэтому простительно.

Если best - 480p (большего нету) то он тоже с раздельными потоками.

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

Если best - 480p

В отсутствии 720p, best запустит 360p (video+audio), пропустив 480p.
Там разница невелика, да и не так много видео, где нет 720p.

b, best: Select the best quality format that contains both video and audio.

Можно убедиться на этом видео, GUI для yt-dlp (комментарий).

krasnh ★★★★
()

Устанавливать новую (ещё даже не релизную, вроде) версию mpv не всем удобно (в debian testing например версия от января), а возиться с пересборкой тоже не хочется.

А вот выпускался бы он в AppImage, такой дурости бы не было. Можно было бы просто скачать с сайта новую версию. Да хоть nightly builds делать. Это проблема, которой не должно существовать.

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

Причём тут твой дурацкий appimage?

nightly builds

Это сборки для тестеров! Их ставить не надо. Нужно то, что уже проверено (в данном случае - годами), но только исправить одну конкретную неприятность. А так то скачать откуда-то новый бинарник думаю не проблема.

firkax ★★★★★
() автор топика
27 мая 2023 г.

Не работает

[ytdl_hook] EDL doesn't support fragmentswithout duration with MP4 DASH 
[ytdl_hook] EDL doesn't support fragmentswithout duration with MP4 DASH 
Unknown header: 'global_tags'
EDL parsing failed.
Error in EDL.
     Subs  --sid=1 --slang=ru 'Russian' (webvtt) (external)
No video or audio streams selected.

Exiting... (Errors when loading file)

ZugDuk
()
Ответ на: комментарий от firkax

Ну у меня gentoo mpv версии 0.35.1
Формат '(bv*[ext=mp4][height<=720]+ba*[ext=m4a])[protocol^=http]'
Всё работает без кастылей.
Я помню что были глюки именно с yt-dlp. Потом я обновил через pip. И потом он обновился в gentoo.
На 6 андройде этот ютуб сабака сутулая не работает совсем.

koxoho4192
()
Ответ на: комментарий от firkax

Не, если не использовать внешний скрипт lua, то работает, и при формате 22 звук есть.

global_tags это в скрипте lua что то такое, на это и ругается. У кого все работает, выложите свой скрипт ytdl_hook.lua и скажите версию mpv.
У меня специфический дистриб для orange pi, на основе ubuntu xenial, но с скомпилированным mpv и внедренным вручную python3.
yt-dlp обновлен командой yt-dlp -U, без этого вообще ничего не качало.

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

выложите свой скрипт ytdl_hook.lua

Здесь Исправление отсутствующего звука mpv + ytdl без возни с пересборками (комментарий).

Я у себя не могу повторить твою ошибку. С ytdl_hook.lua и --ytdl=no, все работает.

$ mpv --version
mpv 0.35.0 

$ yt-dlp --version
2023.03.04
krasnh ★★★★
()
Ответ на: комментарий от koxoho4192

Ну у меня gentoo mpv версии 0.35.1
Формат '(bv*[ext=mp4][height<=720]+ba*[ext=m4a])[protocol^=http]'
Всё работает без кастылей.

Вероятно, у тебя не оригинальный 0.35.1 а с патчем. В оригинальном https://github.com/mpv-player/mpv/blob/v0.35.1/player/lua/ytdl_hook.lua эта недоработка ещё есть. И тема именно про неё.

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

Тогда надо не готовый хук класть а взять из своей версии и пропатчить вот этим патчем https://github.com/mpv-player/mpv/commit/94c189dae76ba280d9883b16346c3dfb9720... (совсем чуть-чуть дописать)

Готовый, на который дал ссылку krasnh, годится если у тебя mpv близкой к последней версии. Наверно если взять новый хук к старому mpv - будут несовместимости.

но с скомпилированным mpv

Тогда всё ещё лучше - пропатчи хук в исходниках mpv и перекомпилируй, и никаких конфигов не надо писать тогда.

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

Я не пойму что ты донести то пытаешься этим всем? У тебя работает, круто, значит тебе эта тема не нужна. А у многих не работает без допиливания.

firkax ★★★★★
() автор топика
29 сентября 2023 г.