#python-3.x #video-streaming #torrent #libtorrent
#python-3.x #потоковое видео #торрент #libtorrent
Вопрос:
Я искал по всему Интернету информацию о том, как загружать торрент-файлы через python. Единственное, что мне удалось найти, это libtorrent, проблема с ним в том, что нет четкой документации.
Моя первоначальная цель — по крайней мере, подключить поток во время его загрузки к окну cv2 для его потоковой передачи.
Мне удалось сделать это с помощью YouTube, а также перенести файл mp4 в окно и транслировать его (используя Pyfy), есть ли способ сделать это с помощью python?
или я захожу слишком далеко, и можно загружать торрент-контент с помощью запросов или чего-то еще?
Комментарии:
1. Если вас интересует потоковое видео, в NodeJS есть несколько отличных библиотек, таких как github.com/KiraLT/torrent-stream-server и webtorrent.io . К сожалению, в python нет ничего подобного (я искал некоторое время назад, но не нашел ни одной приличной библиотеки).
2. В том-то и дело, что я хотел создать что-то вроде Stremio, который строится с использованием NodeJS. Ну, думаю, мне придется сначала изучить Node.
3. Если у вас много терпения, вы все равно можете попробовать использовать python. Я нашел несколько библиотек, но у них не было никакой документации. Я пытался читать исходный код, но потерял терпение и перешел на NodeJS. В будущем я планирую вернуться и попробовать использовать python, если я не решу все проблемы с производительностью NodeJS. В любом случае, вы можете присоединиться на github.com/KiraLT/torrent-stream-server проект, любая помощь будет оценена по достоинству.
Ответ №1:
BitTorrent не похож на HTTP. Файлы загружаются и загружаются не по порядку. Файлы необходимо сохранять на диск, отчасти для того, чтобы иметь возможность загружать их позже, а отчасти потому, что файлы (как правило) бесполезны, пока не будет загружен весь файл. Файлы восстанавливаются на диске.
Если вы хотите транслировать контент с торрента, вам придется выполнить некоторые дополнительные шаги самостоятельно.
в libtorrent есть set_piece_deadline()
(docs), чтобы указать, что вы хотите получить фрагмент в ближайшее время, это повлияет на выбор фрагмента для определения приоритета этого фрагмента. Вы также можете установить флаг ( alert_when_available
), чтобы указать, что вы хотите получать уведомление (оповещение), когда данные будут доступны вместе с буфером.