Sistema completo de streaming local de filmes e séries com dois aplicativos Android conectados via rede local.
Servidor local que armazena e transmite filmes/séries do armazenamento interno do dispositivo.
Características:
- Servidor HTTP local (porta 8080)
- Scanneia automaticamente pastas de filmes e séries
- Suporte a múltiplos formatos: MP4, MKV, AVI, WEBM
- API REST para listagem de conteúdo
- Interface Material 3 para gerenciamento
- Notificação de foreground quando ativo
Cliente com interface estilo Netflix/Stremio para assistir conteúdo.
Características:
- UI moderna estilo Netflix com Material 3
- Tema escuro com cores inspiradas em Netflix
- Navegação por filmes e séries
- Busca em tempo real
- Player de vídeo com ExoPlayer
- Suporte a séries com temporadas e episódios
- Modo landscape automático para reprodução
-
Instale o MovieServer no dispositivo que terá os filmes
-
Organize seus arquivos em:
Android/data/com.movielocal.server/files/ ├── Movies/ │ ├── Filme1/ │ │ ├── filme1.mp4 │ │ └── poster.jpg (opcional) │ └── Filme2/ │ ├── filme2.mkv │ └── thumb.jpg (opcional) └── Series/ ├── Serie1/ │ ├── poster.jpg (opcional) │ ├── Season1/ │ │ ├── episode1.mp4 │ │ ├── episode2.mp4 │ │ └── ... │ └── Season2/ │ ├── episode1.mp4 │ └── ... └── Serie2/ └── ... -
Inicie o servidor no app
-
Anote o endereço IP mostrado (ex:
192.168.1.100:8080)
- Instale o MovieClient no dispositivo onde assistirá
- Conecte à mesma rede Wi-Fi do servidor
- Abra o app e insira o endereço do servidor
- Navegue e assista seu conteúdo!
- Kotlin - Linguagem principal
- Jetpack Compose - UI moderna
- Material 3 - Design System
- NanoHTTPD - Servidor HTTP leve
- Gson - Serialização JSON
- Foreground Service - Servidor persistente
- Kotlin - Linguagem principal
- Jetpack Compose - UI moderna
- Material 3 - Design System
- Retrofit - Cliente HTTP
- ExoPlayer - Player de vídeo
- Coil - Carregamento de imagens
- Navigation Compose - Navegação
- Clone o repositório
- Abra no Android Studio
- Sync Gradle
- Build → Build Bundle(s) / APK(s) → Build APK(s)
# Build ambos os apps
./gradlew assembleDebug
# Build apenas o servidor
./gradlew :movieserver:assembleDebug
# Build apenas o cliente
./gradlew :movieclient:assembleDebug- Push para a branch
mainou qualquer branchcapy/** - Os APKs serão gerados automaticamente
- Baixe os artifacts da aba Actions
- Android Studio Hedgehog | 2023.1.1 ou superior
- JDK 17
- Android SDK 34
- Gradle 8.2+
MovieLocal/
├── movieserver/ # App servidor
│ ├── src/main/
│ │ ├── java/com/movielocal/server/
│ │ │ ├── server/ # Lógica do servidor HTTP
│ │ │ ├── models/ # Modelos de dados
│ │ │ └── ui/ # Interface do usuário
│ │ └── res/ # Recursos
│ └── build.gradle.kts
├── movieclient/ # App cliente
│ ├── src/main/
│ │ ├── java/com/movielocal/client/
│ │ │ ├── data/ # API e repositório
│ │ │ ├── ui/ # Interface do usuário
│ │ │ └── player/ # Player de vídeo
│ │ └── res/ # Recursos
│ └── build.gradle.kts
├── build.gradle.kts # Build raiz
└── settings.gradle.kts # Configurações do projeto
GET /api/health
Response: {
"status": "ok",
"version": "1.0",
"serverTime": 1234567890
}
GET /api/content
Response: {
"movies": [...],
"series": [...]
}
GET /api/stream/{file_path}
Response: Video stream
GET /api/thumbnail/{file_path}
Response: Image
O MovieClient utiliza um tema inspirado no Netflix:
- Cor Primária:
#E50914(Netflix Red) - Background:
#141414(Netflix Black) - Surface:
#1F1F1F(Netflix Dark Gray) - Tipografia: Material Design Typography
- Componentes: Material 3
INTERNET- Servidor HTTPACCESS_NETWORK_STATE- Verificar conexãoREAD_EXTERNAL_STORAGE- Acessar arquivos (Android < 13)READ_MEDIA_VIDEO- Acessar vídeos (Android 13+)FOREGROUND_SERVICE- Manter servidor ativoPOST_NOTIFICATIONS- Notificações (Android 13+)
INTERNET- Conectar ao servidorACCESS_NETWORK_STATE- Verificar conexão
- Verifique se ambos os dispositivos estão na mesma rede Wi-Fi
- Certifique-se de que o servidor está rodando
- Tente desabilitar firewall/VPN
- Verifique se o formato do arquivo é suportado
- Confirme que o arquivo não está corrompido
- Teste com outro arquivo
- Nomeie as imagens como
poster.jpg,poster.png,thumb.jpgouthumb.png - Coloque as imagens nas pastas dos filmes/séries
Este projeto é open source e está disponível sob a licença MIT.
Contribuições são bem-vindas! Sinta-se livre para abrir issues e pull requests.
- Suporte a legendas
- Download de metadados automático (TMDb)
- Histórico de reprodução
- Sincronização entre dispositivos
- Suporte a múltiplos servidores
- Cast para TV
- Downloads offline
- Perfis de usuário
Desenvolvido com ❤️ usando Kotlin e Jetpack Compose