В последнее время я часто сталкивался с желанием посмотреть какой-то фильм на телевизоре в отеле/Airbnb/прочее. Но возить HDMI кабель я как то не привык, так что под рукой был только компьютер и все. Но посмотреть телевизор все-же есть возможность!

Идея

Раз у нас есть 2 устройства рядом в одной сети, то почему бы не передать видео как-то с компьютера на телевизор. Вроде все такие умные устройства, smart 🤔

Предположения о телевизоре

Конечно, если там совсем старый телевизор и кроме физического подключения у него ничего нет, то тут сложно что-то сделать. Но обычно в таких местах ставят какие-то дешевые TV приставки и часто это просто телевизор со Smart TV.

По этому, данный метод подойдет только если сразу есть следующее:

  1. Телевизор со Start TV;
  2. Компьютер подключен к той же Wi-Fi сети, что и телевизор;

Примерно такой должна быть сеть, скорее всего она такая и есть. Ни разу не встречал другой топологии в Airbnb с несколькими роутерами или чем-то таким 😃 Пример сети

Способ #1 - VLC

VLC screenshot

Одним из самых простых вариантов и работоспособных оказался запуск VLC проигрывателя сразу на телевизоре и на компьютере. Включаешь стрим с компьютера, указываешь адрес на телевизоре и voilà!

Настройка

Последовательность действий будет примерно такой: включить стрим на компьютере, подключиться по адресу компьютера с телевизора.

Начать стоит с настройки компьютера. Для этого я думаю все смогут скачать VLC. Он есть, наверное, под все возможные платформы. Я лично ставил на macOS с помощью brew install --cask vlc.

Для дальнейшей работы нам нужно узнать IP адрес в локальной сети, в macOS проще всего посмотреть его с помощью терминала ipconfig getifaddr en0. Или можно в настройках Wi-Fi.

Local IP Adress

Отлично, теперь открываем VLC и далее File -> Streem.

VLC streem

Параметры будут такими:

Далее нужно настроить Stream, нажав Setup Stream.

Финальный результат настройки: VLC settings

Отлично, можно начать стрим и пойти к телевизору. Там нужно скачать в Google Play так же VLC. После этого идем в Browsing пункт меню и открываем Streams. Нужно будет указать адрес в формате ниже и готово!

http://<ip>:<port>

VLC TV

Плюсы VLC

Минусы VLC

HTTP сервер

Это вариант, когда мы запускаем на локальном компьютере HTTP сервер, но не VLC. Этот вариант может пригодиться, когда нет возможности установить VLC, но в Smart TV есть браузер. Мы можем открыть так же в браузере наш компьютер по адресу http://<laptop-ip>:<port>.

⚠️ Внимание! В браузере нормально воспроизводится только MP4 формат. Так что нужно будет перекодировать фильм с помощью VLC или другого софта. Я использовал HandBrake. Отличная штука.

Один из самых простых случаев - это запустить маленький Rust HTTP сервер miniserve. После этого можно запустить в папке с фильмами. Он так же выведет адрес во время запуска. Его и вводим. У меня это http://192.168.1.3:8080

Почему нет обычный Python HTTP сервер - python3 -m http.server 8080? Потому что он не поддерживает Range. Когда мы будем пытаться перемотать фильм, ничего не будет работать. Python просто не обрабатывает заголовки для частичной загрузки файла.

Range: bytes=195526656-

Для этого я даже первый раз запустил Nginx в Docker и прокинул в контейнер файл с фильмом. Nginx поддерживает все, что можно и нельзя!

Результат

Фото телевизора