Arquitetura de Centro de Mídia e Entretenimento Doméstico Utilizando Emby, Playnite e AList

  1. Visão Geral da Arquitetura

A construção de um ecossistema de entretenimento doméstico personalizado visa superar as limitações de qualidade (como 4K e áudio Dolby 5.1), fragmentação de direitos autorais e restrições regionais impostas por serviços de streaming tradicionais. Além disso, permite a centralização de acervos pessoais de filmes, músicas, transmissões ao vivo e biblioteca de jogos.

1.1 Componentes Principais

  • Servidor de Mídia (Emby): Gerenciamento de filmes, séries, animes, música e TV ao vivo. Distribuição via Server, Web, Android, iOS e Smart TVs.
  • Agregador de Jogos (Playnite): Unificação de bibliotecas de PC, emuladores (Switch, PlayStation) e plataformas como Steam.
  • Armazenamento e WebDAV (AList/XiaoYa): Integração com armazenamento em nuvem (ex: Aliyun Drive) para exposição de recursos via protocolo WebDAV.
  1. Infraestrutura e Preparação de Mídia (Vídeo)

2.1 Configuração do Ambiente WSL2 e Docker

Para executar os contêineres necessários no Windows, utilizamos o WSL2 com Ubuntu. Abaixo está o script otimizado para habilitar o subsistema e instlaar a distribuição.


# Habilitar recursos do Windows para WSL e Plataforma de Máquina Virtual
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart

# Atualizar o kernel do WSL e definir a versão 2 como padrão
wsl --update
wsl --set-default-version 2

# Listar distribuições disponíveis e instalar o Ubuntu 22.04
wsl --list --online
<img alt="Lista de distribuições WSL" src="https://img2023.cnblogs.com/blog/2015404/202312/2015404-20231202231303008-223685623.png" style="max-width: 100%; height: auto;"></img>
wsl --install -d Ubuntu-22.04

# Verificar status e remover distribuições não utilizadas
wsl -l -v
wsl --unregister NomeDaDistribuicao

Configure o modo de rede espelhado para o WSL2, permitindo que o host acesse os serviços do contêiner via localhost. Crie o arquivo .wslconfig no diretório do usuário:


[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

[experimental]
autoMemoryReclaim=gradual

Instale o Docker Desktop, garantindo que a opção Use the WSL 2 based Engine esteja ativa. Nas configurações de recursos, integre o Docker à distribuição Ubuntu 22.04.

2.2 Implementação do AList (XiaoYa) via Docker

O XiaoYa AList atua como uma ponte para o armazenamento em nuvem. Obtenha o token de atualização e o ID da pasta raiz do seu provedor de nuvem (ex: Aliyun Drive).


# Executar script de instalação automatizada
sudo bash -c "$(curl -fsSL http://docker.xiaoya.pro/update_new.sh)"

# Reiniciar o contêiner e monitorar os logs até a inicialização completa
docker restart xiaoya
docker logs -f xiaoya

Se ocorrerem erros de permissão no socket do Docker, ajuste com sudo chmod 666 /var/run/docker.sock. O acesso WebDAV estará disponível em http://127.0.0.1:5678/dav (usuário: guest, senha: guest_Api789).

2.3 Padronização e Coleta de Metadados (Scraping)

Antes de importar para o Emby, os arquivos devem seguir o padrão SxxExx para séries. Utilize o PowerShell para renomear arquivos em lote:


$prefixoSerie = "S01"
$caminhoOrigem = "D:\Midia\Series\Exemplo"
Set-Location $caminhoOrigem

$episodios = Get-ChildItem -Filter "*.mp4" | Sort-Object Name
$contador = 1
foreach ($ep in $episodios) {
    $novoNome = "{0}E{1:D2}.mp4" -f $prefixoSerie, $contador
    Rename-Item -Path $ep.FullName -NewName $novoNome
    $contador++
}

Para o scraping, utilize o TinyMediaManager (TMM). Configure a API do TMDB, ajuste o arquivo hosts para resolver problemas de DNS regionais e execute a varredura. Certifique-se de que os metadados sejam salvos em arquivos NFO locais.

  1. Gestão de Áudio e Conversão de Letras

Após baixar arquivos de áudio em alta qualidade (FLAC), utilize o MusicTag para buscar capas e metadados. Um problema comum é a codificação das letras (LRC), que frequentemente vem em GBK ou GB2312, causando caracteres corrompidos no Emby. Utilize o iconv no WSL para conversão em massa para UTF-8:


# Converter recursivamente todas as letras .lrc de GBK para UTF-8
find ./musicas -name "*.lrc" -exec sh -c 'iconv -f GBK -t UTF-8 "$1" -o "$1.tmp" && mv "$1.tmp" "$1"' _ {} \;

  1. Transmissão de TV ao Vivo (IPTV)

Para integrar canais de TV ao vivo, obtenha listas em formato m3u ou m3u8. Utilize o IPTV Checker para filtrar URLs offline. Em seguida, edite o arquivo para mapear os IDs dos canais (EPG):


#EXTM3U
#EXTINF:-1 tvg-id="CCTV1.cn" tvg-logo="https://exemplo.com/logo/cctv1.png" group-title="Abertos",CCTV 1
http://stream.exemplo.com/cctv1.m3u8

Faça o upload do arquivo ajustado para um serviço de EPG (como o 51zmt) para gerar o guia de programação em formato XML, que será importado no Emby.

  1. Configruação Avançada do Servidor Emby

5.1 Proxy Reverso para Validação (Nginx)

Para contornar verificações de licença em ambientes isolados, é possível configurar um proxy reverso local que intercepta as requisições para mb3admin.com. Configure o Nginx para retornar payloads JSON estáticos indicando validade.


server {
    listen 443 ssl;
    server_name mb3admin.com;

    ssl_certificate /etc/ssl/certs/mb3admin_cert.pem;
    ssl_certificate_key /etc/ssl/private/mb3admin_key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods *;

    location /admin/service/registration/validateDevice {
        default_type application/json;
        return 200 '{"cacheExpirationDays": 999, "message": "Device Valid", "resultCode": "GOOD"}';
    }

    location /admin/service/registration/validate {
        default_type application/json;
        return 200 '{"featId": "Premium", "registered": true, "expDate": "2099-12-31", "key": "0"}';
    }

    location /admin/service/registration/getStatus {
        default_type application/json;
        return 200 '{"deviceStatus": "0", "planType": "Lifetime", "subscriptions": {}}';
    }
}

5.2 Configurações de Biblioteca e Legendas

  • Metadados: Defina o idioma principal para chinês simplificado (ou português, se disponível via plugins), desative scrapers nativos conflituosos e ative a leitura de NFO.
  • Legendas: Integre com OpenSubtitles. Configure para pular o download se a faixa de áudio padrão já corresponder ao idioma alvo ou se houver legendas embarcadas.
  • TV ao Vivo: Adicione a fonte M3U e configure o guia XMLTV apontando para a URL do EPG gerado anteriormente.
  1. Agregação de Jogos com Playnite

O Playnite unifica a experiência de jogos. Instale plugins essenciais para enriquecer a biblioteca:

  • Metadados: Metadata Local e IGDB para cobertura ampla de PC e emuladores.
  • Multimídia: Extra Metadata Loader (requer FFmpeg) para exibir vídeos de capa e logos transparentes.
  • Utilitários: HowLongToBeat para tempo de jogo, SuccessStory para conquistas unificadas e Ludusavi para backup de saves.

6.1 Emulação e Plataformas

Para emuladores de Switch (Yuzu/Ryujinx), utilize pacotes consolidados para evitar configurações manuais de firmware. Para a Steam, o uso de ferramentas de modificação de DNS (como SteamCommunity_302) pode ser necessário para contornar blouqeios de rede na loja e na comunidade.

  1. Softwares Complementares

Kodi

Alternativa de frontend. Para evitar problemas de renderização de texto, altere a fonte padrão para Arial antes de mudar o idioma para chinês/português. Utilize o protocolo SMB para acessar compartilhamentos do Windows, garantindo que as credenciais de rede estejam configuradas corretamente no painel de controle do sistema host.

Tags: emby playnite alist Docker WSL2

Publicado em 7-12 07:22