RNTV is a video streaming application. Stream video from your sources.
Android | Web | Linux | Windows | MacOS | IOS |
---|---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ✅ | ❓ |
- What is RNTV?
- Table of Contents
- Flow
- Main Features
- Installation
- Development
- Add your video sources
- Release build
- License
Made with Lunacy
- 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 📱
Make sure you have setup react native environment here
Clone this repo
git clone https://github.com/dev6699/rntv.git
cd rntv
Install dependencies
yarn
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
"react-native": "npm:react-native-tvos@<version>"
- For android
yarn start
- For web,
Open your web browser and go to http://localhost:19006 to access the application.
yarn web
- Sample source can be found at /src/services/tv/sample.ts
-
Add your source satisfy the following types.
export type TVideoProvider = { /** * Called when application first boot up, showing videos in home screen */ getHomeVideoList(): Promise<TVideosRec[]>; /** * Called when `more` button is clicked on home screen * @param path url to the video category */ getVideoCategory(path: string): Promise<TVideosRec[]>; /** * 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<TVideosRec> /** * Called when video card is clicked * @param path url to the video */ getVideoSources(path: string): Promise<TVideoSources>; /** * Called when video episode is clicked * @param path url to find the playable video url (e.g. mp4, m3u8...) */ getVideoUrl(path: string): Promise<string>; /** * Called when video search is performed * @param keyword video search keyword */ getVideoSearchResult(keyword: string): Promise<TVideo[]>; /** * 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<TVideo>; };
-
Include the source in /src/services/tv/index.ts
import { TVideoProvider } from './types'; import * as sample from './sample'; export * from './types'; export const TVService: Record<string, TVideoProvider> = { sample, } as const;
-
For android, find
app-release.apk
at /android/app/build/outputs/apk/releaseyarn build
-
For desktop, find output at /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.
yarn build:desktop
This project is licensed under the terms of the MIT license.