https://github.com/dev6699/rntv
RNTV is a video streaming tv/mobile application. Stream video from your sources.
https://github.com/dev6699/rntv
android-tv hls-stream react-native react-native-video video video-downloader
Last synced: 3 months ago
JSON representation
RNTV is a video streaming tv/mobile application. Stream video from your sources.
- Host: GitHub
- URL: https://github.com/dev6699/rntv
- Owner: dev6699
- License: mit
- Created: 2022-07-23T01:59:30.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2025-12-19T13:48:56.000Z (4 months ago)
- Last Synced: 2025-12-22T05:36:53.934Z (4 months ago)
- Topics: android-tv, hls-stream, react-native, react-native-video, video, video-downloader
- Language: TypeScript
- Homepage:
- Size: 26.5 MB
- Stars: 6
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# RNTV
## What is RNTV?
RNTV is a video streaming application. Stream video from your sources.
#### Platform Support
| Android | Web | Linux | Windows | MacOS | IOS |
| :-----: | :-: | :---: | :-----: | :---: | :-: |
| ✅ | ✅ | ✅ | ✅ | ✅ | ❓ |
## Table of Contents
- [What is RNTV?](#what-is-rntv)
- [Table of Contents](#table-of-contents)
- [Flow](#flow)
- [Main Features](#main-features)
- [Installation](#installation)
- [Development](#development)
- [Add your video sources](#add-your-video-sources)
- [Release build](#release-build)
- [License](#license)
## Flow
Made with _[Lunacy](https://icons8.com/lunacy)_

## Main Features
- Built in web browser for downloading videos from websites 📥
- HLS Streaming 🌐
- Video Download with AES-128 Encrypted Stream Support 🔒
- Android TV Remote Control Support 📺
- Internationalization: English and Chinese 🌍
- Save Favorite Videos ❤️
- Simple and Clean UI with No Ads 📱
## Installation
Make sure you have setup react native environment [here](https://reactnative.dev/docs/environment-setup)
Clone this repo
```bash
git clone https://github.com/dev6699/rntv.git
cd rntv
```
Install dependencies
```bash
npm i
```
## Development
**NOTE:**
To build your project for TV, you should change your package.json imports to import react-native as follows, so that this package is used instead of the core react-native package. [More information](https://github.com/react-native-tvos/react-native-tvos?tab=readme-ov-file#react-native-tvos)
```
"react-native": "npm:react-native-tvos@"
```
1. For android
```
npm run start
npm run android
```
2. For web,
```
npm run web
```
Open your web browser and go to http://localhost:8081 to access the application.
### Add your video sources
- Sample source can be found at [/src/services/tv/sample.ts](/src/services/tv/sample.ts)
1. Add your source satisfy the following [types](/src/services/tv/types.ts).
```typescript
export type TVideoProvider = {
/**
* Called when application first boot up, showing videos in home screen
*/
getHomeVideoList(): Promise;
/**
* Called when `more` button is clicked on home screen
* @param path url to the video category
*/
getVideoCategory(path: string): Promise;
/**
* Called when reached the end of category screen
* @param path url to the video category list
* @param page next page to load
*/
getVideoCategoryMore(path: string, page: number): Promise
/**
* Called when video card is clicked
* @param path url to the video
*/
getVideoSources(path: string): Promise;
/**
* Called when video episode is clicked
* @param path url to find the playable video url (e.g. mp4, m3u8...)
*/
getVideoUrl(path: string): Promise;
/**
* Called when video search is performed
* @param keyword video search keyword
*/
getVideoSearchResult(keyword: string): Promise;
/**
* Called when favourite videos are loaded from local storage
* to ensure videos status are up to date
* @param video favourite video stored in local
*/
updateVideoStatus(video: TVideo): Promise;
};
```
2. Include the source in [/src/services/tv/index.ts](/src/services/tv/index.ts)
```typescript
import { TVideoProvider } from './types';
import * as sample from './sample';
export * from './types';
export const TVService: Record = {
sample,
} as const;
```
## Release build
1. For android, find `app-release.apk` at [/android/app/build/outputs/apk/release](/android/app/build/outputs/apk/release)
```
npm run build
```
2. For desktop, find output at [/desktop/out/rntv-desktop-linux-x64/rntv-desktop](/desktop/out/rntv-desktop-linux-x64/rntv-desktop)
For more information on how the output may vary depending on your environment, please refer to https://www.electronforge.io/cli.
```
npm run build:desktop
```
## License
[](https://github.com/dev6699/rntv/blob/main/LICENSE)
This project is licensed under the terms of the [MIT license](/LICENSE).