NuvioStreaming/docs/TORRENT_ENGINE_RESEARCH_2026-02-19.md

74 lines
3.2 KiB
Markdown

# Torrent Engine Research (2026-02-19)
## Scope
- Android torrent streaming engine choice and viability.
- iOS/tvOS torrent engine choice and integration strategy.
- Check requested references (`Stremio`, `vlc-bittorrent`) and pick lowest-risk modern path.
## Android Findings
### Selected
- `frostwire/frostwire-jlibtorrent`
- GitHub: 498 stars, recently updated.
- Works directly from Android/Kotlin, stable JVM binding around libtorrent.
- Current branch now uses `2.0.12.7` artifacts from FrostWire Maven.
### Why
- Native Android integration is straightforward compared to desktop-plugin or Node-sidecar designs.
- Mature dependency chain and direct access to session/piece priority APIs.
## iOS Findings
### Core Engine
- `arvidn/libtorrent` remains the strongest base core.
### Real-World iOS References
- `XITRIX/iTorrent`
- 2,953 stars, actively maintained.
- Uses `libtorrent-rasterbar` and local HTTP serving for playback.
- `XITRIX/LibTorrent-Swift`
- Active Swift wrapper used by iTorrent.
- `danylokos/SwiftyTorrent`
- Useful reference, but older push cadence and older toolchain approach.
- `siuying/peerflix-ios`
- Archived and stale; not suitable for modern production path.
### Local HTTP Layer
- `swisspol/GCDWebServer` is archived.
- `swhitty/FlyingFox` is active and supports range-friendly file serving patterns.
### Requested Check: `johang/vlc-bittorrent`
- Valuable as VLC plugin reference, but not a direct RN iOS integration path.
- Architecture is plugin-for-VLC, not embedded app-native bridge for Nuvio.
## Stremio Research Summary
- `stremio-shell` desktop runtime expects a separate streaming server flow.
- `stremio-service` packaging is desktop-oriented.
- This confirms Nuvio mobile should use embedded native torrent engine modules per platform, not desktop service porting.
## Decision
1. Android: stay on jlibtorrent-based native module (already integrated).
2. iOS/tvOS: use libtorrent core + Swift bridge + local HTTP range bridge (prefer active server stack like FlyingFox or equivalent custom).
3. Keep one JS contract across platforms (`prepareStream/stopStream/stopAllStreams`) with platform-native implementations.
## Data Points (GitHub API, 2026-02-19)
- `frostwire/frostwire-jlibtorrent`: stars 498, pushed 2026-02-14
- `arvidn/libtorrent`: stars 5,847, pushed 2026-02-18
- `XITRIX/iTorrent`: stars 2,953, pushed 2026-01-29
- `XITRIX/LibTorrent-Swift`: stars 8, pushed 2026-02-03
- `danylokos/SwiftyTorrent`: stars 128, pushed 2024-04-20
- `siuying/peerflix-ios`: stars 84, archived, pushed 2017-03-18
- `swisspol/GCDWebServer`: stars 6,615, archived, pushed 2022-10-05
- `swhitty/FlyingFox`: stars 626, pushed 2026-01-23
- `johang/vlc-bittorrent`: stars 472, pushed 2026-02-04
## Links
- https://github.com/frostwire/frostwire-jlibtorrent
- https://github.com/arvidn/libtorrent
- https://github.com/XITRIX/iTorrent
- https://github.com/XITRIX/LibTorrent-Swift
- https://github.com/danylokos/SwiftyTorrent
- https://github.com/siuying/peerflix-ios
- https://github.com/swhitty/FlyingFox
- https://github.com/swisspol/GCDWebServer
- https://github.com/johang/vlc-bittorrent
- https://github.com/Stremio/stremio-shell
- https://github.com/Stremio/stremio-service