Поддержка видеохостингов в MPC-BE с помощью yt-dlp

Автор V0lt, 21 февраля 2026, 17:18:18

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

V0lt

Встроенный парсер Ютуба в MPC-BE в очередной раз устарел и сломался, поэтому был удален. Теперь анализом страниц и получением ссылок на потоки видео будет заниматься yt-dlp. В связи с этим поддержка yt-dlp была полностью переписана.

Тестовые сборки MPC-BE

Необходимые инструменты:
yt-dlp_win.zip
deno-x86_64-pc-windows-msvc.zip
LAV Filters

Для сравнительных тестов можно использовать свежие версии MPC-HC x64 и MPC-BE x64 из основной ветки.

После скачивания разблокировать файлы через свойства и распаковать/установить.

Путь для yt-dlp нужно прописать в настройках плееров.
deno.exe положить рядом с yt-dlp.exe.

Изменения:
1. Первая тестовая версия.
2. Добавлено игнорирование последующих видеоформатов с повторяемыми URL. Актуально для RUTUBE.
3. Добавлено игнорирование потоков HLS, если присутствуют другие потоки. В этом случае потоки HLS все равно не открываются.
4. Включены настройки выбора кодеков и высокого FPS.
5. Выбираем HTTP или DASH в зависимости от количества (Vimeo).
6. Исправлено получение URL для миниатюры (VK Видео).
7. Исправлена загрузка субтитров.

Ограничения:
Нет поддержки выбора языка звуковых дорожек.
Нет поддержки загрузки плейлиста.

V0lt

#1
Ссылки на нейтральные видео, которые можно открыть в MPC-BE и MPC-HC с помощью yt-dlp.

YouTube
ролик: https://www.youtube.com/watch?v=F6UB0V2Fct4
ролик HDR: https://www.youtube.com/watch?v=LXb3EKWsInQ
дубляж на разные языки: https://www.youtube.com/watch?v=13HaWgCWwqs

VK Видео
ролик: https://vkvideo.ru/video-227203050_456239050
несколько звуковых дорожек: https://vkvideo.ru/video-100084161_456242581
прямой эфир: https://vkvideo.ru/video-48864_456249172

Rutube
кино: https://rutube.ru/video/fcb693c38528938caa3b70101b7c58bf/

Смотрим (не поддерживается yt-dlp, 12.05.2026)
кино: https://smotrim.ru/brand/8098
прямой эфир: https://smotrim.ru/channel/4

Дзен
ролик: https://dzen.ru/video/watch/692934d1d9d5fe0e2d9881e2

Vimeo
ролик: https://vimeo.com/1146061720

Twitch
https://www.twitch.tv/

Aleksoid1978

#2
Многие хостинги, ну как тот же vk, ссылки полученные просто так не открыть, они требуют дополнительные параметры, типа user agent, может referer и что то ещё. У нас сейчас такого нет.
AMD Ryzen 7 7700 /ASRock B650M Pro RS /G.Skill RIPJAWS 32 ГБ /Kingston 1Tb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

Поддержку Referer можно сделать для LAV Splitter Source. Я как-то начинал это внедрять, но тестировать не на чем было...

Aleksoid1978

Цитата: V0lt от 22 февраля 2026, 06:47:13Поддержку Referer можно сделать для LAV Splitter Source. Я как-то начинал это внедрять, но тестировать не на чем было...

Пока это не нужно, не встречал еще таких ссылок.
AMD Ryzen 7 7700 /ASRock B650M Pro RS /G.Skill RIPJAWS 32 ГБ /Kingston 1Tb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

#5
Обновил yt-dlp и докинул deno.
Добавил в тесты Дзен, Vimeo и Twitch.

MPC-BE x64 1.8.9.84
С Ютубом плохо, остальное открывает.

MPC-HC x64 2.6.2.6
Все открывает.

Aleksoid1978

AMD Ryzen 7 7700 /ASRock B650M Pro RS /G.Skill RIPJAWS 32 ГБ /Kingston 1Tb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

V0lt

yt-dlp.exe -F URL > test_formats_.txt

С Ютубом в принципе все понятно.

VK Видео
Указаны разрешение, иногда видеокодек AVC1 и частота кадров. Потоки: HLS, DASH и URL. Для трансляций - только HLS.

RUTUBE
Указаны разрешение, видеокодек AVC1 и частота кадров. Потоки: m3u8 и default.

Смотрим
Для кино есть два потока HLS по 5 битрейтов. Больше ничего.
Для трансляций указаны разрешение, видеокодек AVC1 и частота кадров. HLS.

Дзен
DASH - указаны разрешение, видеокодек AVC1/VP9 и частота кадров.
HLS - только битрейт.

Vimeo
Указаны разрешение, видеокодек AVC1/H264 и частота кадров. Потоки: HLS, DASH и HTTP.

Вариант оформления на коленке.

Логика такая.
1. Выбираем тип потока HLS, DASH, HTTP и прочее. Что нам больше понравится (HTTP или DASH?).
2. Выбираем разрешение, видеокодек, частоту кадров, HDR.
3. Если разрешения и прочего нет или есть несколько вариантов, то выбираем по битрейту (малый, средний, высокий).
4. Звук по той же логике или просто первый.

V0lt

#8
На моей системе MPC-BE не работает с Ютубом через прокси NoDPI. VKВидео воспроизводит, но там прокси ничего не меняет.
Браузеры и yt-dlp через прокси NoDPI нормально работают с Ютубом.

Возможно тут есть какие-нибудь ограничения WinInet.
В теории его можно заменить на libcurl, но есть ощущение что это какой-то монстр.
Альтернатива - cpp-httplib. Это для тестов, если скучно будет.

V0lt

#9
Алгоритм работы с видеохостингами в MPC-BE с помощью yt-dlp

После открытия ссылки происходит следующее:

1. Проверяем ссылку на доступность и MIME-тип
Это нужно чтобы отправлять на анализ yt-dlp только HTTP страницы.
Изменения: Нет.
Найдена проблема - неработает с прокси-сервером

2. Запускаем yt-dlp.exe и получаем список потоков и доп. информацию в формате JSON
Изменения: Обернуто в отдельную функцию.

3. Парсим JSON и анализируем данными
Анализируются видеопотоки и аудиопотоки, сортируются и фильтруются неподходящие. Пишутся метаданные и прочее.
Изменения: Написан отдельный класс.
В планах: доп. фильтрация потоков, т.к. HLS не открывается.

4. Выбираются предпочтительные потоки согласно настройкам
Изменения: Используются настройки из старого парсере для Ютуба.
В планах: выбор языка аудиодорожек.

5. Наполняется OpenFileData и запускается воспроизведение
Изменения: переписан код в связи с другими изменениями.

Дополнительные функции:

6. Переключение потоков
Изменения: переписан код в связи с другими изменениями.

7. Сохранение в файл
Изменения: добавлена функция формирования выходного имени файла, почищен код.

V0lt

#10
Проблемы:

1. Если видео НЕ является живой трансляцией, то HLS не поддерживается даже с установленным LAV Splitter Source в системе. Поэтому при наличии других потоков потоки HLS удаляются из списка.

2. YouTube отдает локализированные потоки в формате HLS. Похоже yt-dlp не видит переводы в формате DASH. Поэтому перевод на нужный язык не подключится.

3. Смотрим поменял страницу и yt-dlp больше не поддерживает его.

4. Vimeo плохо поддерживается yt-dlp. Обычные потоки определяются без аудио дорожки и плеер пытается добавить аудиопоток DASH и обламывается. Потоки DASH не открываются (возможно там что-то другое). Но в целом ролики смотреть можно.