
Некоторое время назад мне понадобилось решить вполне обычную рабочую задачу. На площадке работала выпускающая группа: камеры, звук, видеопульт, титры и отбивки. Готовая программа через OBS отправлялась во VK Video. Мне нужно было получить этот же эфир у себя дома, открыть его в OBS и передать дальше — например, на YouTube. При этом не хотелось вмешиваться в работу выпускающей группы, подключаться к видеопульту или просить коллег организовать для меня отдельный выход.
Я подумал: если во VK уже поступает полностью собранный эфир с титрами, заставками и переключением камер, почему бы не забрать готовый поток непосредственно оттуда? Так появилась небольшая утилита VK Stream URL.
Исходная задача
Рабочая схема на площадке выглядела примерно так:
Камеры → видеопульт → OBS → VK Video
А мне требовалось удалённо получить уже готовую программу:
Площадка Удалённый компьютер Камеры → пульт → OBS → VK Video → VK Stream URL → OBS → YouTube
У такого подхода было несколько преимуществ.
Выпускающая группа продолжала заниматься основным эфиром и не отвлекалась на дополнительное направление. Не требовалось устанавливать рядом с пультом ещё один компьютер, прокладывать кабели или настраивать отдельное кодирование. Я мог находиться дома, получить готовое изображение из VK и самостоятельно решить, куда передавать его дальше.
Конечно, повторное получение и кодирование потока добавляет задержку и немного снижает качество. Поэтому для крупных и критически важных эфиров правильнее получать отдельный сигнал непосредственно с площадки. Но в моей ситуации важнее были скорость запуска и возможность работать удалённо.
Первый вариант за один вечер
Сначала я хотел просто получить прямую ссылку на поток VK Video и вставить её в OBS. За вечер собрал на Python небольшую заготовку: поле для ссылки VK, кнопка обработки и вывод найденного адреса видеопотока.
Для дальнейшей разработки использовал Codex. Я описывал необходимое поведение, проверял результат на реальных трансляциях и постепенно дорабатывал программу. Codex помогал разбирать код, добавлять интерфейс, локальный сервер, обработку ошибок и тесты.
Получился довольно практичный для меня формат разработки: сначала быстро проверить идею, а затем по результатам реальной эксплуатации уточнять требования. При этом главным тестом был не внешний вид интерфейса, а длительная трансляция. Программа должна была работать несколько часов и по возможности самостоятельно восстанавливаться после временных сетевых ошибок.
Почему недостаточно получить одну ссылку
Ссылки на медиапотоки VK временные и подписанные. Можно получить рабочий HLS‑адрес, добавить его в проигрыватель и увидеть видео. Но через некоторое время срок действия ссылки закончится. Поэтому сохранить один найденный адрес и использовать его постоянно не получится.
Во время реальных эфиров обнаружились и другие ситуации:
отдельные HLS‑сегменты иногда не загружались;
узел CDN мог временно вернуть ошибку;
прямая ссылка переставала действовать;
проигрыватель формально продолжал работать, но новые кадры уже не поступали;
после сетевого сбоя источник приходилось подключать заново.
Если эфир уже идёт, вручную искать новую ссылку и перестраивать источник в OBS неудобно. Хотелось, чтобы этим занималась сама программа.
Что умеет VK Stream URL
VK Stream URL — небольшая бесплатная утилита для Windows. Она принимает обычную ссылку на трансляцию или запись VK Video:
https://vkvideo.ru/live-XXXXXXXX_XXXXXXXXX
или:
https://vkvideo.ru/video-XXXXXXXX_XXXXXXXXX
После обработки программа позволяет:
получить доступные варианты видеопотока;
выбрать подходящее качество;
скопировать прямую ссылку;
посмотреть видео во встроенном окне;
открыть поток во VLC;
передать его в OBS через постоянный локальный адрес;
обновить временную ссылку, когда она перестанет действовать.
Для получения информации о видео используется yt-dlp. Встроенное воспроизведение работает через VLC и библиотеку python-vlc.
Интерфейс я старался оставить простым: вставить ссылку, нажать кнопку и получить поток. Во время эфира лишние настройки обычно только мешают.
Постоянный адрес для OBS
Основная идея программы состоит в том, что OBS получает не временную ссылку VK, а постоянный локальный адрес:
http://127.0.0.1:8787/vlc.m3u
VK Stream URL запускает на компьютере небольшой локальный сервер. Перед выдачей плейлиста программа проверяет состояние удалённого потока и при необходимости получает свежую ссылку.
Схема получается такой:
OBS → постоянный локальный адрес → VK Stream URL → временный адрес VK
Для OBS локальный адрес не меняется. Работу с временными ссылками берёт на себя утилита.
Есть и более простой адрес:
http://127.0.0.1:8787/stream
Он подходит клиентам, которым не требуется дополнительная обработка HTTP‑заголовков.
Как добавить поток в OBS
Общий порядок работы выглядит так:
Запустить VK Stream URL.
Вставить ссылку на трансляцию VK Video.
Нажать кнопку получения потока.
Скопировать локальный адрес.
Добавить его в OBS как медиаисточник.
Проверить изображение и звук.
Запустить трансляцию на нужную площадку.
VK Stream URL и OBS должны работать на одном компьютере, поскольку адрес 127.0.0.1 доступен только локально.
Перед настоящим эфиром лучше провести продолжительный тест. Нужно проверить не только наличие изображения, но и задержку, синхронизацию звука, нагрузку на компьютер и восстановление после кратковременного отключения сети.
Проверка на региональных трансляциях
Программу я испытал на нескольких региональных эфирах.
Выпускающая группа работала на площадке и передавала основную программу во VK. Я находился дома, забирал этот эфир, открывал его в OBS и запускал дополнительную трансляцию на YouTube.
Именно такая работа показала, что получение ссылки — лишь небольшая часть задачи. Намного важнее поведение программы через час или два после начала эфира.
По результатам испытаний появились:
автоматическое обновление временной ссылки;
повторные запросы после сетевых ошибок;
увеличенный буфер для прямых трансляций;
контроль поступающих и отображаемых кадров;
отображение фактического FPS;
автоматический перезапуск при остановке изображения;
журналирование диагностической информации.
Секретные параметры подписанных ссылок в журнал не записываются.
Программа не делает соединение с интернетом идеальным и не может исправить все проблемы CDN. Но она сокращает количество ручных действий и помогает быстрее понять, что произошло с потоком.
Работа с закрытыми видео
Для общедоступной трансляции обычно достаточно вставить ссылку. Если видео доступно только авторизованному пользователю, можно указать файл cookies.txt или выбрать браузер, из которого программа попробует получить cookies. Использовать эту возможность следует только для собственных трансляций или материалов, на работу с которыми есть разрешение. Утилита не предназначена для обхода ограничений доступа и распространения чужого контента.
Ограничения
У решения есть понятные ограничения.
Во‑первых, поток проходит дополнительный путь через VK и удалённый компьютер. Это увеличивает задержку.
Во‑вторых, при повторной передаче через OBS видео обычно кодируется ещё раз. Итоговое качество зависит от параметров исходного эфира, выбранного потока и настроек кодировщика.
В‑третьих, доступность трансляции зависит не только от программы, но и от VK, CDN, домашнего интернет‑соединения и принимающей площадки.
Поэтому я воспринимаю VK Stream URL не как замену профессиональной системе доставки сигнала, а как вспомогательный инструмент для ситуаций, когда нужно быстро и удалённо забрать уже готовый эфир.
Где скачать
Готовую версию для Windows можно скачать на странице проекта:
Исходный код опубликован на GitHub:
github.com/tarbagan/vk_stream_url
Для встроенного просмотра необходимо установить VLC media player.
Если запускать программу из исходного кода:
install.bat run.bat
Первый файл создаёт виртуальное окружение и устанавливает зависимости, второй запускает приложение.
Что дальше
Проект появился из конкретной рабочей необходимости и пока остаётся небольшой утилитой.
В дальнейшем хотелось бы:
упростить подключение к OBS;
проверить больше вариантов ссылок VK Video;
улучшить диагностику сетевых проблем;
сделать обычный установщик;
добавить английский интерфейс;
испытать программу на большем количестве длительных трансляций.
Возможно, подобная задача возникает не только у меня. Если вам тоже нужно удалённо получить готовый эфир из VK, не вмешиваясь в работу выпускающей группы на площадке, проект может пригодиться.
Буду благодарен за замечания, сообщения об ошибках и описание реальных сценариев использования. Их можно оставить в Issues проекта.