# RedPlayer **Repository Path**: rte-dev/RedPlayer ## Basic Information - **Project Name**: RedPlayer - **Description**: REDPlayer是一款由小红书自主研发的跨平台(支持Android、iOS、HarmonyOS等平台)播放器。不同于行业其他播放器,REDPlayer 具有结构简单、耦合度低、功能边界清晰等特点,提供了多种接入方式,技术人员可根据需要灵活选择,既可快速集成SDK使用,也可基于源码进行定制开发。 - **Primary Language**: Unknown - **License**: LGPL-2.1 - **Default Branch**: main - **Homepage**: https://github.com/RTE-Dev/RedPlayer - **GVP Project**: No ## Statistics - **Stars**: 142 - **Forks**: 24 - **Created**: 2024-02-21 - **Last Updated**: 2025-06-14 ## Categories & Tags **Categories**: multimedia, ios-modules, android-modules **Tags**: None ## README # REDPlayer ![示例图片](./redplayer.jpg) ![GitHub release (latest by date including pre-releases)](https://img.shields.io/badge/release-v1.0.0-blue) ![GitHub license](https://img.shields.io/badge/license-LGPL2.1-blue) ## About REDPlayer REDPlayer 是一款由小红书自主研发的跨平台(支持 Android、iOS、HarmonyOS 等平台)播放器。不同于行业其他播放器,REDPlayer 具有结构简单、耦合度低、功能边界清晰等特点,提供了多种接入方式,技术人员可根据需要灵活选择,既可快速集成SDK使用,也可基于源码进行定制开发。 REDPlayer 的宗旨是让开发者可以快速明确地了解播放器的基本构造,并可根据个人需求进行简单扩展,满足不同用户的多样需求,可作为学生学习的基础工具,也可作为企业的商用平台。 REDPlayer 支持点播、直播场景下的多种协议和格式(如 HLS、MP4、FLV 等),并可二次扩展更多协议(如:RTC 等)。每个模块均是解耦的,开发者可以根据需要挂载自定义模块,如自研解码器、渲染器等。 Platform | Build Status -------- | ------------ Android | Done iOS | Done others | In Coming ### Quickstart/Demo - Android [Quickstart](source/android/README.md)/ [Demo](source/android/app/README.md) - IOS [Quickstart](source/ios/README.md)/ [Demo](source/ios/RedPlayerDemo) - In coming... ### Features Function | Function Description | Current Support Situation | Other Notes -------- | -------------------- | ------------------------- | ----------- Rich Format | Supports rich audio and video formats such as FLV, HLS, MP4, MP3, and Vorbis | ✅ | DASH Protocol | Supports standard protocol DASH | ✅ | Optimized version of DASH for on-demand support in the later stage HDR | Supports multiple HDR formats such as HDR10/HLG. Distribution and playback support are provided according to the model | ✅ | URL Playback | Supports playback of local and network videos via URL | ✅ | Log Reporting | Supports reporting player logs and statistics related to playback point information | ✅ | Abnormal Analysis | Supports obtaining corresponding abnormal information through log analysis | ✅ | H.264 Playback & Hardware Decoding | Supports H.264 video sources and hardware decoding | ✅ | H.265 Playback & Hardware Decoding | Supports H.265 video sources and hardware decoding | ✅ | Software decoding capabilities will be supported in the later stage Automatic switching between software and hardware decoding | Automatically switches to software decoding when the terminal does not support hardware decoding | ✅ | Playback Control | Supports playback control functions such as start, end, pause, and resume | ✅ | Accurate Seeking | Supports accurate seeking to a specified position, which can be accurate to the frame level | ✅ | Dynamic Dropping | Start dynamic dropping when the frame rate exceeds 60 fps | ✅ | Replay | Supports manually triggered replay after the video ends | ✅ | Continue playing | Supports setting the continuous playing time point | ✅ | Loop Playback | Supports automatic replay after video playback ends | ✅ | Parameter configuration is required Variable Speed Playback | Supports variable speed playback of 0.5-2 times, and the audio实现variable speed without changing the pitch | ✅ | Definition Adjustment | Supports switching between multiple definitions for on-demand and transcoding | ✅ | Seeking within the Cache | Supports seeking without clearing the buffer for cached video content | ✅ | Packing Mode | Supports picture cropping and filling | ✅ | Private DRM | Supports private DRM encryption schemes | ✅ | Adaptive Bitrate | When playing HLS/DASH, it supports automatically selecting the definition for playback through bandwidth prediction | ✅ | Currently only supports selection before playback, and does not support abr during playback Volume Settings | Supports real-time adjustment of system volume and mute operation | ✅ | Pure Audio Playback | Supports playing audio only | ✅ | Preload | Supports setting the preload size to reduce the time spent on the first screen | ✅ | Play While Downloading | Supports playing while caching and downloading subsequent content, and you can set network policies | ✅ | Playback Callback | Supports playback status callback, first frame callback, playback completion or failure callback | ✅ | Retry on Playback Failure | Automatically retries on playback failure | ✅ | Only supports retries for non-4XX and 5XX classes Real-time Download Speed | Supports getting real-time download speed | ❌ | Will be supported in later versions Encrypted Streaming PlayBack | Support for on-demand transcoding of encrypted streams | ❌ | Need for custom development Screenshot Function | Support for capturing any frame of the playback picture | ❌ | Will be supported in later versions Thumbnail Preview | Support for previewing progress bar thumbnails (sprite map) | ❌ | Related to business, not currently supported Set player size | Support for customizing the width and height of the player | ❌ | Will be supported in later versions External subtitles | Support for two docking modes of external subtitles: full-link solution and pure client solution | ❌ | Will be supported in later versions Client super-resolution | The client performs super-resolution enhancement on low-quality videos | ❌ | Will be supported in later versions H.266 playback | Support for video playback in H.266 encoding format | ❌ | Will be supported in later versions AV1 playback | Support for video playback in AV1 encoding format | ❌ | Will be supported in later versions ### Open Content ```bash # Describe the main contents of current open source and the estimated time and contents of the next open source ``` - [CONTENTS.md](CONTENTS.md) ### Usage - You can directly integrate your project by calling the interface or compile independently. - [INTERFACES.md](INTERFACES.md) ### Build Environment - **Install Homebrew & Git** ```bash /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install git ``` - **Build Android** **Using Android SDK** [Andrioid SDK](https://developer.android.com/studio?hl=en) is android project base dependency. You should download and then config with the following command: ```bash # add this line to your ~/.bash_profile or ~/.profile, the android sdk will work export ANDROID_SDK= # My build environment: # macOS 14.0 # Android Studio Flamingo | 2022.2.1 Patch 2 # gradle version: 7.5.0 ``` - **Build iOS** **Using CocoaPods** [CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command: ```bash $ gem install cocoapods # My build environment: # macOS 14.0 # Xcode 15.2 (15C500b) # Cocoapods version: 1.10.2 # Ruby 3.0.6p216 ``` ### Latest Changes - [NEWS.md](NEWS.md) ### Support - Please try to discuss technical issues (https://github.com/RTE-Dev/RedPlayer/issues) publicly on github, and do not inquire privately by email. We will not reply one by one. ### Licence #### Self Licence ``` Copyright (c) 2024 xiaohongshu Licensed under LGPLv2.1 or later ``` #### Dependence Licence - ffmpeg: LGPL v2.1+ - soundtouch: LGPL v2.1 - libcurl: MIT License - c-ares: MIT License - glide: MIT License - Masonry: MIT License - openssl: Apache License 2.0 - PictureSelector: Apache License 2.0 ### Law And Rule All rights and explanations belong to Xiaohongshu,you should always ask your lawyer for these stuffs before use it in your product.