Assistindo a TV Torrent no Raspberry Pi

Tudo começou com o fato de que a amada esposa pediu uma TV de pleno direito (o fato é que não moramos na Rússia). Está claro que a IPTV não é um problema atualmente, mas não havia desejo de conectar um satélite para alguns canais, e o cônjuge imediatamente se recusou a assistir TV no PC. Aliás, o Raspberry Pi B + acabou por estar à mão. Será discutido mais adiante.

Raspbmc (agora chamado OSMC ) foi escolhido como a principal distribuição de "framboesa" . Não descreverei o processo de instalação em detalhes, pois é banal simples e consiste em implantar o arquivo em um cartão Micro SD. E qualquer especialista em TI pode lidar com a configuração da própria “framboesa” para acessar a rede.

Olhando para o futuro, não posso deixar de mencionar que já havia um artigo sobre Habr sobre Torrent-TV baseado em XBMC , mas há uma implementação completamente diferente e, como me pareceu, é menos conveniente:

  • os canais passam pela lista geral;
  • nenhum guia de programa;
  • nenhum arquivo de programas anteriores.

Bem, vá para a parte mais interessante.

Problema


Parece que tudo não está em lugar nenhum mais simples - nós seguimos as instruções e nos alegramos, mas não estava aqui! É aqui que as armadilhas começam. Agora em ordem:

  1. Ace Engine - não funciona com Raspberry;
  2. O Ace Engine funciona apenas com o host local.

Nós vamos lidar com eles.

Pedra número 1, aceitamos "como está" e passamos para a pedra número 2.

Em resumo, o Ace Engine funciona em duas portas - 6878 para controle de fluxo e uma porta arbitrária para transmissão direta de vídeo. O primeiro ouve formalmente todas as interfaces, mas aceita comandos apenas do host local, o segundo inicialmente ouve apenas 127.0.0.1. E para se conectar a partir de Malinka, precisamos acessar as duas portas.

Portanto, não há outra opção a não ser usar o servidor do cliente ("Malinka" - PC). Decidimos sobre o modelo, vamos seguir em frente.

Configuração do PC


Obviamente, primeiro colocamos o AceStream em si . Você pode colocar tudo (mecanismo + player + plugin do navegador), mas eu coloquei apenas o próprio mecanismo. Eu não vou assistir TV no PC.

Agora precisamos fazer o encaminhamento de porta. A versão mais óbvia do netsh , infelizmente, não sabe como portproxy no 127.0.0.1. E não havia desejo de cercar o NAT completo com o avanço no Windows 7. A salvação foi encontrada na Internet na forma de uma porta unix do utilitário rinetd para Windows.
Portanto, precisamos redirecionar duas portas, uma que sabemos, a segunda é atualizada toda vez que o Ace Engine é iniciado e gravada no arquivo acestream.port (na pasta em que o AceStream está instalado). No meu caso, o Ace funcionará o tempo todo, por isso tudo bem com a opção de inicialização automática junto com o PC.

Neste ponto, qualquer um pode fazer o que bem entender, mas eu coloquei o seguinte arquivo na inicialização em lote:

start /d "c:\Users\Lexs\AppData\Roaming\ACEStream\engine\" ace_engine.exe
ping 127.0.0.1 -n 10 > nul
cd "c:\Users\Lexs\AppData\Roaming\ACEStream\engine\"
set /p port=<acestream.port
@echo 10.100.0.50 36001 127.0.0.1 6878 > rinetd.conf
@echo 10.100.0.50 36002 127.0.0.1 %port% >> rinetd.conf
start /d "c:\Users\Lexs\AppData\Roaming\ACEStream\engine\" rinetd.exe

10.100.0.50 - Endereço do PC na rede doméstica. Com a configuração do PC concluída, siga em frente.

Configuração de plugins


O endereço IP para conectar-se ao AceStream pode ser definido através da configuração do plug-in da GUI, e você terá que fazer um “hack sujo” com as portas. Pegamos o arquivo SSH e nos conectamos ao "raspberry". Em seguida, precisamos editar o script Python localizado em:

/home/pi/.kodi/addons/script.torrent-tv.ru/ts.py

Nele, você precisa especificar as portas que selecionamos para encaminhamento, no meu caso, assim:

    239         if defines.ADDON.getSetting('web_port'):
    240             self.webport = defines.ADDON.getSetting('webport')
    241         else:
    242             self.webport = '36001'
    243         if defines.ADDON.getSetting('port'):
    244             self.aceport = int(defines.ADDON.getSetting('port'))
    245         else:
    246             self.aceport = 36002

Salvamos, reiniciamos o plug-in Torrent-TV e desfrutamos de todo o trabalho do plug-in no "raspberry"!

Source: https://habr.com/ru/post/pt387079/


All Articles