4 мин.

Как смотреть фильмы с разных экранов

Как смотреть фильмы с разных экранов

В последнее время я часто сталкивался с желанием посмотреть какой-то фильм на телевизоре в отеле/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

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

  • Drop media: выбрать файл с фильмом
  • Profile:
    • Encapsusation: MPEG-TS
    • Video codec: Keep original track
    • Audio codec: Keep original track
    • Subtitles: Можно включить, если хотите 😉
  • Choose Destination: Stream!

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

  • Type: HTTP
  • Address: Наш локальный адрес
  • Port: 9999 (можно указать любой, просто это проще набрать на пульте)
  • TTL: 1 (не меняем)

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

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

http://<ip>:<port>

VLC TV

Плюсы VLC

  • Легко настроить;
  • Работает стабильно;
  • Нет проблем с передачей формата видео и звука;
  • Можно менять звуковые дорожки на лету;
  • Поддерживаются субтитры;

Минусы VLC

  • Нужно установить VLC на телевизор, а для этого нужен Android TV;

HTTP сервер

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

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

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

miniserve terminal

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

Range: bytes=195526656-

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

Результат

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