![]() Signed-off-by: CY. <chenyun@shengwang.cn> |
||
---|---|---|
source | ||
CONTENTS.md | ||
COPYING.LGPLv2.1 | ||
COPYING.LGPLv3 | ||
INTERFACES.md | ||
JSON.md | ||
MODULE_LICENSE_APACHE2 | ||
NEWS.md | ||
NOTICE | ||
README.md | ||
redplayer.jpg |
README.md
REDPlayer
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/ Demo
-
IOS Quickstart/ Demo
-
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
```
Usage
- You can directly integrate your project by calling the interface or compile independently.
- INTERFACES.md
Build Environment
-
Install Homebrew & Git
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install git
-
Build Android
Using Android SDK
Andrioid SDK is android project base dependency. You should download and then config with the following command:
# add this line to your ~/.bash_profile or ~/.profile, the android sdk will work export ANDROID_SDK=<your sdk path> # My build environment: # macOS 14.0 # Android Studio Flamingo | 2022.2.1 Patch 2 # gradle version: 7.5.0
-
Build iOS
Using CocoaPods
CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:
$ gem install cocoapods # My build environment: # macOS 14.0 # Xcode 15.2 (15C500b) # Cocoapods version: 1.10.2 # Ruby 3.0.6p216
Latest Changes
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.