Поддержка видеохостингов в 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. Исправлена загрузка субтитров.
8. Исправлен выбор аудиопотока. Выбирается с тем же "протоколом" что и видео, что исключает некоторые ошибки.
9. Исправлен выбор видеопотока в некоторых ситуациях.
10. При прочих равных формат HTTP имеет преимущество перед DASH. Учитываем HDR.
11. Минимальное запрашиваемое разрешение кадра теперь 360p. Изменен порядок разрешений кадра.
12. Переделана генерация имен файлов при сохранении. Используем CSaveFFmpegDialog. Сохраняем обложку рядом с аудиофайлом.
13. Сохраняем измененную настройку "FFmpegMerge".

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

V0lt

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

YouTube
ролик: https://www.youtube.com/watch?v=F6UB0V2Fct4
ролик HDR: https://www.youtube.com/watch?v=LXb3EKWsInQ
ролик 240p: https://www.youtube.com/watch?v=y8Kyi0WNg40
дубляж на разные языки: 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/lofigirl

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 не открываются (возможно там что-то другое). Но в целом ролики смотреть можно.