• Stars
    star
    1,451
  • Rank 32,425 (Top 0.7 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 9 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

PLDroidMediaStreaming 是七牛推出的一款适用于 Android 平台的推流 SDK,支持 RTMP 推流,h.264 和 AAC 编码,硬编、软编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。PLDroidMediaStreaming 是现在目前重点维护的版本,自带采集模块也支持用户自己做采集端。

PLDroidCameraStreaming

PLDroidCameraStreaming 是一个适用于 Android 的 RTMP 直播推流 SDK,可高度定制化和二次开发。特色是同时支持 H.264 软编/硬编和 AAC 软编/硬编。支持 Android Camera 画面捕获,并进行 H.264 编码,以及支持 Android 麦克风音频采样并进行 AAC 编码;还实现了一套可供开发者选择的编码参数集合,以便灵活调节相应的分辨率和码率;同时,SDK 提供数据源回调接口,用户可进行 Filter 处理。借助 PLDroidCameraStreaming ,开发者可以快速构建一款类似 MeerkatPeriscope 的 Android 直播应用。

功能特性

  • 支持 H.264 和 AAC 软编(推荐)
  • 支持 H.264 和 AAC 硬编
  • 软编支持 Android Min API 15(Android 4.0.3)及其以上版本
  • 硬编支持 Android Min API 18(Android 4.3)及其以上版本
  • 支持构造带安全授权凭证的 RTMP 推流地址
  • 支持 RTMP 封包及推流
  • 支持 RTMP 推流自适应网络质量动态切换码率或自定义策略
  • 支持内置美颜,以及可动态调节美颜效果
  • 支持数据源回调接口,可自定义 Filter (滤镜) 特效处理
  • 支持前后置摄像头,以及动态切换
  • 支持自动对焦
  • 支持手动对焦
  • 支持 Encoding Mirror 设置
  • 支持 Zoom 操作
  • 支持 Mute/Unmute
  • 支持闪光灯操作
  • 支持纯音频推流,以及后台运行
  • 支持截帧功能
  • 支持动态更改 Encoding Orientation
  • 支持动态切换横竖屏
  • 支持动态水印
  • 支持动态文字与贴图
  • 支持蓝牙麦克风
  • 支持后台推流
  • 支持双声道立体声
  • 支持 QUIC 推流
  • 支持 ARM, ARMv7a, ARM64v8a, X86 主流芯片体系架构
  • 支持 SEI 信息发送
  • 支持 SRT 推流

PLDroidCameraStreaming 文档

详细的开发指南请参考官方文档

设备以及系统要求

  • 设备要求:搭载 Android 系统的设备
  • 系统要求:Android 4.3(API 18) 及其以上

版本升级须知

v3.1.3

  • 从 v3.1.3 版本开始,HappyDNS 库务必升级到 1.0.0 版本

v3.1.2

  • 从 v3.1.2 版本开始,SDK 将不再强制要求获取 READ_PHONE_STATE 和 ACCESS_FINE_LOCATION 的权限

v3.1.1

  • 从 v3.1.1 版本开始,HappyDNS 库务必升级到 0.2.18 版本

v3.0.2

  • 从 v3.0.2 版本开始,请务必添加 android.arch.lifecycle:extensions:x.y.z 的依赖
  • 从 v3.0.2 版本开始,StreamingEnv.init(Context context) 已被弃用,请更新到 StreamingEnv.init(Context contex, String userId) 进行环境的初始化,其中,userId 代表用户的唯一标识符,用于区分不同的用户

v3.0.1

  • 从 v3.0.1 版本开始,如果您使用了 Happy DNS 库,请务必升级到 0.2.17 版本

v3.0.0

  • 从 v3.0.0 版本开始,七牛直播推流 SDK 需要先获取授权才能使用。授权分为试用版和正式版,可通过 400-808-9176 转 2 号线联系七牛商务咨询,或者 通过工单 联系七牛的技术支持。
  • v3.0.0 之前的版本不受影响,请继续放心使用。
  • 老客户升级 v3.0.0 版本之前,请先联系七牛获取相应授权,以免发生鉴权不通过的现象。
  • 基于 114 dns 解析的不确定性,使用该解析可能会导致解析的网络 ip 无法做到最大的优化策略,进而出现推流质量不佳的现象。因此建议使用非 114 dns 解析

v2.4.1

  • 从 v2.4.1 开始,VideoProfile 对 H264 格式配置的参数由 annexb 改为 avcc,之前设置为 false 的客户,需要将配置改为 true。

例如目前设有如下配置的客户:

StreamingProfile.VideoProfile vProfile =
	new StreamingProfile.VideoProfile(20, 1000 * 1024, 60, false);

需将参数调整为:

StreamingProfile.VideoProfile vProfile =
	new StreamingProfile.VideoProfile(20, 1000 * 1024, 60, true);

v2.3.0

  • 从 v2.3.0 版本开始,增加 libpldroid_streaming_puic.so 库
  • libpldroid_streaming_core.so 依赖于 libpldroid_streaming_puic.so,无论是否启用 QUIC 推流,都需要包含 libpldroid_streaming_puic.so 库

v2.2.0

  • 从 v2.2.0 版本开始,须要在 build.gradle 中删除 QoS 依赖
dependencies {
    ...
    compile 'com.qiniu.pili:pili-android-qos:0.8.+'
    ...
}

v2.1.0

  • 使用录屏功能前,须要在 AndroidManifest.xml 中注册 SDK 内置的 Activity:
<activity
        android:name="com.qiniu.pili.droid.streaming.screen.ScreenCaptureRequestActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
  • pili-android-qos 最新版本为 0.8.13

  • 更新 StreamingPreviewCallback#onPreviewFrame

StreamingPreviewCallback#onPreviewFrame(byte[] data, int width, int height)

调整为

/**
* Called if the {@link StreamingPreviewCallback} registered.
*
* @param data the contents of the preview frame in fmt format
* @param width the width of the frame
* @param height the height of the frame
* @param rotation set the clockwise rotation of frame in degrees to achieve the same effect of preview display.
* @param fmt the format of the frame. See also {@link com.qiniu.pili.droid.streaming.av.common.PLFourCC}
* @param tsInNanoTime the timestamp of the frame
*
* */
boolean StreamingPreviewCallback#onPreviewFrame(byte[] data, int width, int height, int rotation, int fmt, long tsInNanoTime);

v2.0.1

从 v2.0.1 开始:

  • 删掉废弃的 CameraStreamingManager,可使用 MediaStreamingManager
  • 须在宿主项目中的 build.gradle 中加入如下语句:
dependencies {
    ...
    compile 'com.qiniu:happy-dns:0.2.+'
    compile 'com.qiniu.pili:pili-android-qos:0.8.+'
    ...
}
  • 废弃的 StreamingPreviewCallback#onPreviewFrame(byte[] bytes, Camera camera) 被删掉,可使用 StreamingPreviewCallback#onPreviewFrame(byte[] bytes, int width, int height)

  • AudioSourceCallback#onAudioSourceAvailable(ByteBuffer byteBuffer, int size, boolean eof) 接口回调中增加时间戳信息,更改为 AudioSourceCallback#onAudioSourceAvailable(ByteBuffer byteBuffer, int size, long tsInNanoTime, boolean eof)

v2.0.0 Beta

v2.0.0 Beta 开始,SDK 由 PLDroidCameraStreaming 更名为 PLDroidMediaStreaming,将会提供更丰富的功能接口。有如下重大更新:

  • 新增 MediaStreamingManager,废弃 CameraStreamingManager 且不再被维护
  • 新增一些辅助类并废弃相关的类
    • 新增 StreamingStateChangedListener,并废弃 CameraStreamingManager#StreamingStateListener
    • 新增 StreamingState,并废弃 CameraStreamingManager#STATE
    • 新增 StreamingSessionListener,并废弃 CameraStreamingManager#StreamingSessionListener
    • 新增 AVCodecType,并废弃 CameraStreamingManager#EncodingType
  • 包名更新为 com.qiniu.pili.droid.streaming.*;,因此需要更新混淆相关代码

v1.6.1

v1.6.1 开始,为了便于用户更好地定制化,将 TransformMatrix 信息加入到 SurfaceTextureCallback#onDrawFrame。因此更新到 v1.6.1 版本之后,若实现了 SurfaceTextureCallback 接口,需要将

int onDrawFrame(int texId, int texWidth, int texHeight);

更改为:

int onDrawFrame(int texId, int texWidth, int texHeight, float[] transformMatrix);

v1.6.0

v1.6.0 开始,在使用 SDK 之前,需要保证 StreamingEnv 被正确初始化 ,否则在构造核心类 CameraStreamingManager 的阶段会抛出异常。具体可参看 Demo

StreamingEnv.init(getApplicationContext());

v1.4.6

从 v1.4.6 版本开始,需要在宿主项目中的 build.gradle 中加入如下语句:

dependencies {
    ...
    compile 'com.qiniu:happy-dns:0.2.7'
    ...
}

否则,在运行时会发生找不到 happydns 相关类的错误。

v1.6.0

v1.6.0 开始,在使用 SDK 之前,需要保证 StreamingEnv 被正确初始化 ,否则在构造核心类 CameraStreamingManager 的阶段会抛出异常。具体可参看 Demo

StreamingEnv.init(getApplicationContext());

v1.6.1

v1.6.1 开始,为了便于用户更好地定制化,将 TransformMatrix 信息加入到 SurfaceTextureCallback#onDrawFrame。因此更新到 v1.6.1 版本之后,若实现了 SurfaceTextureCallback 接口,需要将

int onDrawFrame(int texId, int texWidth, int texHeight);

更改为:

int onDrawFrame(int texId, int texWidth, int texHeight, float[] transformMatrix);

反馈及意见

当你遇到任何问题时,可以通过在 GitHub 的 repo 提交 issues 来反馈问题,请尽可能的描述清楚遇到的问题,如果有错误信息也一同附带,并且在 Labels 中指明类型为 bug 或者其他。

通过这里查看已有的 issues 和提交 Bug。

More Repositories

1

PLDroidPlayer

PLDroidPlayer 是七牛推出的一款免费的适用于 Android 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。
4,540
star
2

PLPlayerKit

PLPlayerKit 是七牛推出的一款免费的适用于 iOS 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。
2,006
star
3

PLDroidShortVideo

PLDroidShortVideo 是七牛推出的一款适用于 Android 平台的短视频 SDK,提供了包括美颜、滤镜、水印、断点录制、分段回删、视频编辑、混音特效、视频剪辑、本地转码、视频上传在内的多种功能,支持高度定制以及二次开发。
Java
1,684
star
4

PLCameraStreamingKit

PLCameraStreamingKit 是 Pili 直播 SDK 的 iOS 推流端,是带有采集模块老版本 SDK。如果是新用户接入,建议使用 PLMediaStreamingKit。该版本支持 RTMP 推流,h.264 和 AAC 编码,硬编软编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。
C
1,034
star
5

PLMediaStreamingKit

PLMediaStreamingKit 是七牛推出的一款适用于 iOS 平台的推流 SDK,支持 RTMP 推流,h.264 和 AAC 编码,硬编、软编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。
Objective-C
542
star
6

PLShortVideoKit

PLShortVideoKit 是七牛推出的一款适用于 iOS 平台的短视频 SDK,提供了包括美颜、滤镜、水印、断点录制、分段回删、视频编辑、混音特效、视频剪辑、本地转码、视频上传在内的多种功能,支持高度定制以及二次开发。
Objective-C
448
star
7

PLStreamingKit

PLStreamingKit 是 Pili 直播 SDK 的 iOS 推流端,是不带采集模块老版本 SDK。如果是新用户接入,请使用 PLDroidMediaStreaming。该版本支持 RTMP 推流,h.264 和 AAC 编码,软编硬编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。
Objective-C
250
star
8

ipcam_sdk

七牛推出了一款适用于嵌入式 IP Camera 设备进行 RTMP 推流的 SDK 开发套件
C++
169
star
9

wxapp-live-demo

七牛直播小程序 demo 代码
JavaScript
162
star
10

QNRTC-Web

QNRTCWeb 是七牛云推出的一款适用于 Web 平台的实时音视频 SDK,提供了包括音视频通话、静音、发布、订阅多种功能,提供灵活的接口,支持高度定制以及二次开发。
HTML
131
star
11

pili-sdk-java

Pili Streaming Cloud server-side library for Java
Java
120
star
12

pili-librtmp

C
116
star
13

QNRTC-Android

QNDroidRTC 是七牛云推出的一款适用于 Android 平台的实时音视频 SDK,提供了包括音视频通话、美颜、滤镜、水印等多种功能,提供灵活的接口,支持高度定制以及二次开发。
Java
114
star
14

QPlayer2-Android

HTML
96
star
15

pili-sdk-php

Pili Streaming Cloud server-side library for PHP
PHP
73
star
16

pili-sdk-nodejs

Pili Streaming Cloud server-side library for NodeJS
JavaScript
68
star
17

pili-html5-player-example

HTML5 <audio> or <video> player with Flash and Silverlight shims that mimics the HTML5 MediaElement API, enabling a consistent UI in all browsers.
JavaScript
60
star
18

pili-sdk-python

Pili Streaming Cloud server-side library for Python
Python
52
star
19

QNRTC-iOS

QNRTCKit 是七牛云推出的一款适用于 iOS 平台的实时音视频 SDK,提供了包括音视频通话、美颜、滤镜、水印等多种功能,提供灵活的接口,支持高度定制以及二次开发。
Objective-C
52
star
20

PLDroidRTCStreaming

PLDroidRTCStreaming 是七牛推出的一款适用于 Android 平台的连麦互动 SDK,支持低延时音视频通话、RTMP 直播推流,可快速开发一对一视频聊天、多人视频会议、网红直播连麦、狼人杀、娃娃机等应用,接口简单易用,支持高度定制以及二次开发。
Java
50
star
21

PLAudioStreamingKit

Pili Live Streaming SDK for iOS, AAC hardware encoding and RTMP publishing supported.
C
48
star
22

pili-sdk-php.v2

Pili Streaming Cloud Server-Side Library For PHP, Version 2
PHP
46
star
23

pili-sdk-go

Pili Streaming Cloud server-side library for Go
Go
38
star
24

PLWinPlayer

PLWinPlayer 是七牛推出的一款适用于 Windows 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。
C++
38
star
25

pili-streaming-react-native

pili-streaming-react-native 是支持 React Native 项目添加直播推流功能的 SDK,底层基于 PLDroidMediaStreaming (Android) 和 PLMediaStreamingKit(iOS) 实现。
Java
37
star
26

pili-react-native

Pili Streaming Cloud React Native SDK
Java
32
star
27

pili-sdk-go.v2

Pili Streaming Cloud Server-Side Library For Go, Version 2
Go
28
star
28

PLLiving

The best practice of Pili iOS Streaming SDK
Objective-C
26
star
29

QPlayer2-IOS

HTML
25
star
30

PLRTCStreamingKit

PLRTCStreamingKit 是七牛推出的一款适用于 iOS 平台的连麦互动 SDK,支持低延时音视频通话、RTMP 直播推流,可快速开发一对一视频聊天、多人视频会议、网红直播连麦、狼人杀、娃娃机等应用,接口简单易用,支持高度定制以及二次开发。
Objective-C
25
star
31

pili-sdk-ruby

Pili Streaming Cloud server-side library for Ruby
Ruby
23
star
32

pili-videojs-example

An example application in Video.js
JavaScript
22
star
33

QNRTC-WxApp

QNRTCWxApp 是七牛云推出的一款适用于微信小程序平台的实时音视频 SDK,提供了包括音视频通话、静音、发布、订阅多种功能,
20
star
34

PLLiveCourse

Pili 公开课
Objective-C
19
star
35

QNRTC-SampleCode-Video-Basic

Sample Code 工程用于展示如何 加入/离开 房间,发布/订阅 音视频数据流,动态 启用/禁用 本地音视频数据流,切换前后置摄像头等功能使用
Objective-C
17
star
36

QNRTC-Windows

QNRTCWin 是七牛云推出的一款适用于 Windows 平台的实时音视频 SDK,提供了灵活的接口,支持高度定制以及二次开发。
C++
16
star
37

pili-sdk-csharp

C#
13
star
38

PLDroidMediaStreaming-ByteDance

Java
13
star
39

pilipilid

pilipilid
JavaScript
13
star
40

PLMediaStreamingKit-ByteDance

PLMediaStreamingKit-ByteDance 是七牛推出的一款适用于 iOS 平台的具有高级特效功能的推流 SDK,提供了包括高级美颜、高级滤镜、动态贴纸、水印、推流、混音、QUIC等在内的多种功能,支持高度定制以及二次开发。
Objective-C
13
star
41

cpili

A command line tool for streaming an h.264 / aac / flv file over RTMP
C
12
star
42

pili-sdk-demo-server

七牛直播/连麦 SDK 官方 demo 的后台业务服务器代码
Go
10
star
43

QNCube_Android

牛魔方是七牛云推出的一款基于七牛rtc的方案研发demo集合app,包含了面试场景、工业检修、在线教育、在线ktv、互动娱乐、一起看电影、在线考试,语聊房、pk直播解决方案demo。
Kotlin
9
star
44

QNRTC-Linux

QNRTCLinux 是七牛云推出的一款适用于 Linux 平台的实时音视频 SDK,提供了灵活的接口,支持高度定制以及二次开发。
C++
8
star
45

docs

documentation for Pili
7
star
46

PLVendorLibs

The Third Party Dependency Libraries of iOS
C
7
star
47

QNRTC-Uniapp

Objective-C
7
star
48

QPlayer2-HarmonyOS-NEXT

TypeScript
7
star
49

QNLiveKit_Web

互动直播低代码Web
TypeScript
6
star
50

PLDroidShortVideo-ByteDance

Lua
6
star
51

pili-sdk-go-example

CSS
6
star
52

QNRTPlayer-Web

TypeScript
5
star
53

PLShortVideoKit-ByteDance

Lua
5
star
54

QNRTCLive-iOS

Lua
3
star
55

pili-sdk-c

Pili Streaming Cloud server-side library for C/C++
C
3
star
56

QNLiveKit_Server

互动直播低代码服务端
Go
3
star
57

QNShortVideo-ByteDance

Things related to ByteDance SDK and QNShortVideo SDK
Objective-C
3
star
58

pili-camera-sdk-demo

An example based on the pili-camera-sdk
C
3
star
59

QNLiveKit_Android

互动直播低代码Android
Kotlin
3
star
60

QNAISDK-iOS

Objective-C
3
star
61

PLMediaStreaming-RongCloud

Java
3
star
62

PLMediaStreaming-ByteDance

Things related to ByteDance SDK and PLMediaStreaming SDK
Objective-C
3
star
63

QNCube_Web

TypeScript
3
star
64

QPlayer2-Windows

HTML
2
star
65

QNRTCLive-Android

Lua
2
star
66

QNRTC-Signal

Signal API for QNRTC
2
star
67

QNRTPlayer-iOS

Objective-C
2
star
68

QNDroidIMSDK

Java
2
star
69

QNLiveKit_iOS

互动直播低代码iOS
Objective-C
1
star
70

QNRTC-ByteDance-Android

Lua
1
star
71

QNUniappIMSDK

QNUniappIMSDK
Vue
1
star
72

QNVideoTemplate-Android

Java
1
star
73

QAuth_iOS

一键登录对外demo
Objective-C
1
star
74

QNCube_Server

Go
1
star
75

NiuVideo-iOS

七牛 SDK 演示型 app 源码
Objective-C
1
star
76

QNShortVideo-FaceUnity

Things related to FaceUnity SDK and QNShortVideo SDK
Java
1
star
77

QNDroidWhiteBoardSDK

Kotlin
1
star
78

QNRTPlayer-Android

Java
1
star