目录

REDPlayer

示例图片

GitHub release (latest by date including pre-releases) GitHub license

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

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

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.

邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号