Смотрим торенты на смарт ТВ без смс и регистрации

habr.png

Доброго времени суток, хабр.

Решил поделиться одним из способов, как можно посмотреть Ваш любимый фильм/сериал, в хорошем качестве, не посещая всякие стремные сайты, которые так хотят чтобы вы поиграли в казино.

Сразу оговорюсь, я ни в коем случае не призываю Вас использовать пиратский контент. Пиратство это зло. Всегда покупайте лицензионный контент.

Ну, а для тех кто хочет посмотреть торрент, не защищенный авторским правом, на своём смарт телевизоре, не дожидаясь скачивания, ниже интересный способ.

Стоит у меня Samsung смарт тв, на котором я разными способами пытался смотреть кино.

Пробовал установить на Ubuntu minidlna. До какого-то времени это работало довольно удобно, но в один прекрасный день dlna приложение на телевизоре стало периодически вылетать. Я так и не разобрался с чем это связано, возможно прилетел какой-то неудачный апдейт. В любом случае смотреть можно было только полностью скачанный контент, что было не очень интересно.

Пробовал по старинке закачивать кино на внешний hdd, и подкючать в телевизору. Через пару тройку раз это надоело.

В итоге долгое время смотрел просто через встроенный в телевизор браузер. Через какое-то время и этот способ ужасно достал.

Хотелось чего-то удобного и простого и чтобы сразу не дожидаясь пока загрузится весь контент.

Вы скажете, есть Chromecast. Но мне хотелось все сделать без лишних девайсов у меня дома.

Как оказалось встроенный браузер (в отличии от десктопного хрома), поддерижвает HLS. Ну так почему бы нам просто не поднять, но ноутбуке hls поток, и смотреть через браузер.

И так поехали.

1. Ставим torrent клиент

Есть очень класный npm пакет, называется он torrent. Все бы хорошо, но он не умеет выбирать один файл и списка для скачивания и ограничивать скорость скачивания. Это очень важно. Зато минималистичный, очень быстро подхватывает пиры и отлично качает в последовательном режиме, что нам и нужно.

Пришлось покопаться в нутрях и дописать нужный функционал. И так ставим torrent из форка

npm install 'https://github.com/zim32/torrent.git#master' -g

Качаем торент файл или магнет ссылку.
Чтобы получить список файлов нужно выполнить команду info

torrent info some.torrent | less
Находим нужное нам название файла (не путь) и выполняем команду

torrent some.torrent --select 'FILE_NAME' --downloadLimit 1000000

Если все хорошо, Вы увидите статистику скачивания, к-во пиров и т.д. Файлы будут складываться в текущую директорию. Ограничение скорости в Byte/s.

Ограничение необходимо, потому что в моем случае торент забивает весь канал, роутеру становится плохо и дальше между ноутбуком и смарт тв происходят тормоза. Главное чтобы скорость была выше битрейта потока иначе будут подгрузки и буферизация.

Делаем HLS поток

Устанавливаем ffmpeg. В моем случае все работало с обычным ffmpeg из репозитория.

apt install ffmpeg

Создаем паблик директорию, куда будет идти наш поток.

Далее возможно несколько вариантов. Если в исходном файле видео в формате h264, а аудио AAC, то можно попробовать не перекодировать поток. В этом случае запускаем стрим таким образом

ffmpeg -re -i 'torrent_dir/movie.mkv' -codec copy -map 0:0 -map 0:1 -map_chapters -1 -movflags default_base_moof+frag_keyframe -f hls -hls_playlist_type event ~/www/player/out.m3u8

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

ffmpeg -re -i 'torrent_dir/movie.avi' -c:v libx264 -preset slow -r 24 -x264opts fps=24:bitrate=2000:pass=1:vbv-maxrate=4000:vbv-bufsize=8000:keyint=24:min-keyint=24:scenecut=0:no-scenecut -c:a aac -b:a 256k -map 0:0 -map 0:1 -map_chapters -1 -movflags default_base_moof+frag_keyframe -f hls -hls_playlist_type event ~/www/player/out.m3u8

Опциями -map 0:0 и -map 0:1 мы вибарем нужные каналы. Видео и русская дорожка. Опция -map_chapters -1 удаляет на всякий случай весь мусор в виде информации о главах и т.д.

Посмотреть доступные каналы можно командой ffprobe movie.mkv

Создаем сервер

В ту же папку куда идет стрим нужно положить файл index.html со следующим сожержанием




    
    Title

















Устанавливаем простой http сервер.

npm i http-server -g

Запускаем сервер

http-server -a 0.0.0.0 -c-1

Смотрим кино

Теперь на телевизоре достаточно открыть браузер с адресом вашего ноутбука к примеру 192.168.1.200:8080 и наслаждаться.

Всем спасибо за внимание.

© Habrahabr.ru