Как транслировать (передавать) видео и музыку в сеть — делаем собственное вещание в локалку и интернет
Доброго дня!
Если у вас есть какая-нибудь камера или ТВ-тюнер, и вы хотите сделать свою трансляцию в локальной сети (или в интернет) — то эта заметка для вас. 👌
Впрочем, никто не мешает с таким же успехом вещать и просто какие-нибудь фильмы/музыку, например, с ПК на ТВ или мобильные гаджеты.
Единственное, учитывайте, что ваш компьютер (который транслирует) должен быть достаточно производительным (чтобы избежать лагов и подвисаний). К тому же, нужно иметь хорошее и стабильное подключение к сети (не ниже 10 Мбит/с). В помощь: тест скорости интернета.
В этой заметке я по шагам рассмотрю все необходимые действия как для вещания по локальной сети, так и по интернету. Разумеется, в вашем случае могут быть небольшие отличия (например, при выборе устройства захвата. ).
Трансляция видео в сеть: пример настройки вещания
Запуск трансляции
И так, для нашей задачи понадобится универсальный кросс-платформенный плеер VLC. Программа позволяет не только смотреть потоковое видео в сети, но и создавать трансляцию самостоятельно.
Основные преимущества проигрывателя:
- «всеядность»: воспроизводит файлы, внешние диски, сетевые трансляции и т.д.;
- поддерживает все популярные форматы файлов: MPEG-2, MPEG-4, H.264, MKV, WebM, WMV, MP3 (даже, если у вас не установлены кодеки в системе);
- работает на Windows, Android, Linux, Mac OS X, iOS;
- программа бесплатна (и без рекламных вставок).
Примечание : очень желательно установить данный проигрыватель и на то устройство, с которого вы будете вещать, и на то — на котором будете принимать трансляцию. В своем примере ниже я так и сделал.
Теперь необходимо запустить VLC на том компьютере (устройстве), с которого будем вести трансляцию.
После перейти в меню «Медиа/Передать» (Ctrl+S). См. скриншот ниже.
Далее нужно выбрать, что мы будем транслировать:
В своем примере я просто добавил один из фильмов.
Затем нужно уточнить источник вещание: при выборе обычного файла (как в моем случае) можно сразу же нажать далее (т.е. следующий) .
Нужно выбрать в списке «HTTP» и нажать на кнопку «Добавить» . У вас появится вкладка с одноименным названием, в которой можно указать порт и путь трансляции (по умолчанию порт 8080). Рекомендую не менять эти значения и перейти к дальнейшей настройке.
В этом шаге нужно выбрать качество трансляции (подбирается экспериментально, в зависимости от ваших нужд). Например, я транслирую видео с ПК на телефон — поэтому выбрал видео для андроида ( прим. : на экране телефона почти незаметна разница между оригиналом и сжатым видео) .
Здесь можно задать доп. параметры вещания. В большинстве случаев можно сразу же нажать «Поток» .
При первом запуске трансляции брандмауэр Windows попросит вас дать разрешение на работу VLC — просто согласитесь, нажав на «Разрешить доступ» .
Если трансляция запустилась вы увидите тикающий таймер времени (см. нижнюю часть окна программы). То есть с этого момента — вещание можно принять на другое устройство и посмотреть «что-там. «. 👌
Как смотреть трансляцию
По локальной сети
Примечание!
Т.е. и компьютер (который вещает), и устройство (которое принимает трансляцию) находится в одной общей локальной сети. В своем примере ниже: трансляция ведется с ПК, а принимается на телефон под андроидом. Оба устройства подключены к одной Wi-Fi сети.
Для начала нам нужно узнать локальный IP-адрес компьютера, который ведет трансляцию. Сделать это можно через командную строку: введя в ней ipconfig и нажав Enter.
См. ниже скриншот — мой IP 192.168.0.106 (это нужно для дальнейшего подключения).
ipconfig / Командная строка
Кстати, узнать IP-адреса также можно в настройках роутера.
IP-адрес в настройках роутера
Теперь запускаем VLC на том устройстве, с которого будем принимать трансляцию (например, телефон). Далее переходим в меню программы и выбираем «Поток» (или «открыть URL-адрес трансляции») .
Далее нужно указать сетевой адрес — http://192.168.0.106:8080
1) Вместо 192.168.0.106 — у вас будет свой IP-адрес того компьютера, который ведет трансляцию (например, 192.168.10.102 или 192.168.0.103). Мы этот IP-адрес узнавали в ШАГЕ 1.
2) Вместо порта 8080 может использоваться другой (если при создании трансляции вы изменили его).
Если вы все указали правильно, то через 3-5 сек. устройство «прогрузит» кэш и VLC начнет показывать вещание.
Разумеется, к одной трансляции можно одновременно подключить несколько устройств.
По интернету
Всё отличие здесь будет сводится к тому, что нам нужно узнать не локальный IP-адрес (который «дал» нам роутер), а внешний/глобальный (у того ПК, который ведет трансляцию) . Сделать это можно по-разному, ссылку на инструкцию привожу ниже.
Например, мне импонирует утилита Speccy — достаточно открыть раздел Network и вы знаете и локальный IP, и внешний.
Speccy — просмотр IP-адресов, раздел Network
Разумеется, подобную информацию также можно узнать в настройках роутера. Скрин ниже в качестве примера.
Чтобы к вашей трансляции могли подключиться из интернета — необходимо открыть (пробросить) нужный порт (в нашем случае 8080). По умолчанию, в целях безопасности, роутер не позволяет подключаться из вне.
Делается это обычно в настройках роутера в разделе «Перенаправление портов» (Port Forwarding). Вообще, у меня на блоге есть подробная заметка на эту тему (для начинающих), ссылка ниже.
В помощь! Как пробросить порты на роутере (открываем порты для игр, Skype, uTorrent и др. приложений) — https://ocomp.info/kak-probrosit-portyi-na-routere.html
Теперь запускаем VLC на том устройстве, где будем принимать трансляцию и открываем сетевой адрес вида: http://89.118.10.32:8080
Вместо 89.118.10.32 — у вас будет свой внешний IP-адрес (который мы уточняли в ШАГЕ 1, см. чуть выше).
Если вышеприведенные настройки были корректно заданы — то через несколько секунд начнется показ трансляции (см. скрин ниже). Задача выполнена?!
Трансляция по компьютерной сети
:sout=#transcode:http :sout-all :sout-keep
Ниже для удобства прикреплю готовый батник для запуска VLC и картинку курсора.
Извлеките vlcscr.bat в удобное место для запуска и положите картинку курсора в папку vlc, например
c:\Program Files (x86)\VideoLAN\VLC\
Текст bat файла:
@echo off
cd c:\
cd Program Files (x86)\VideoLAN\VLC\
start vlc.exe screen:// :screen-left=0 :screen-top=0 :screen-height=768 :screen-width=1360 :screen-fps=20.000000 :live-caching=300 :screen-follow-mouse :screen-mouse-image=cursor.png :sout=#transcode:http :sout-all :sout-keep
exit
Остается только проверить трансляцию. Запускаем vlc на любом компьютере в сети и пробуем Медиа — Открыть URL
В качестве адреса нужно указать ip или URL нашего ноутбука сервера, обычно если в сети маршрутизатор, то ip наш ноутбук получит от DHCP сервера.
Порт указываем в соотвествии с настройками трансляции, имя видеофайла также.
В связи с возникающими вопросами связанными с качеством и скоростью трансляции — появилось продолжение.
В продолжении я расскажу как использовать DirectShow фильтр в качестве драйвера захвата. При этом курсор и все элементы экрана остаются неизменными и убирается характерное моргание.
Комментарии
1) Медиа — Открыть устройство захвата
2) Режим «Экран», 1 к/с (ставил 10, 30, не влияло)
3) Внизу кнопка с надписью «Воспроизведение «, рядом стрелка вниз нарисована, нажать на стрелку и выбрать «Поток»
4) Источник «screen:\\» уже заполнен, жмём «Следующий»
5) Новое назначение выбрать «HTTP» и ОБЯЗАТЕЛЬНО. нажать «Добавить». Создаётся вкладка HTTP с заполненным портом «8080», вероятно его можно задать свой, я пока не трогал, в поле «Путь» укажите «\v.ts» без кавычек (зачем пишут аж длинное VIDEO.TS я не понимаю, наверное людям делать нечего набирать по 300 букв). Пробовал не указывать имя файла — не работает сразу. Жмём «Следующий»
6) перекодирование , играемся с кодеками, жмём «Следующий»
7) Жмём «Поток»
8) Настройка закрывается и у VLC в заголовке будет написано «Converting screen://»
9) ЗАПУСКАЕМ VLC (MPC-HC), «Открыть URL»/»Открыть файл», адрес «http://192.168.1.1:8080/v.ts». Адрес 192.168.1.1 у вас должен быть свой.
Почему не люблю подобные статьи — совершенно не ясно для кого она написана. Если для новичка, то тут только 50% информации, то есть запустить ничего не получится. А если для разбирающегося в вопросе, который эти 50% сам понимает как сделать — так ему и сам гайд нафик не нужен. Вот и получается — весь интернет забит бесполезными инструкциями.
Для тех у кого подобная моей проблема вот мой код
@echo off
cd c:\
cd Program Files (x86)\VideoLAN\ VLC\
start vlc.exe screen:// :screen-left=0 :screen-top=0 :screen-height=768 :screen-width=1360 :screen-fps=20.000000 :live-caching=300 :sout=#transcode:udp :sout-all :sout-keep
exit
Спасибо от души! двое с половиной суток пытался решить проблему стрима экрана в udp из командной строки со свёрнутым интерфейсом. Спасибо реально помогло что ты выложил код.
Странно, всё делается по инструкции, но из локальной сети ссылка типа rtsp://192.168.1.127:8554/video.ts не работает.
Подскажите, нужен ли Bat файл и с какой целью необходимо задавать имя файла для трансляции?