Skip to content

v3_EN_ClientSDK

winlin edited this page Jan 21, 2020 · 28 revisions

HOME > EN > Client SDK

The workflow of live streaming:

+---------+      +-----------------+       +---------+
| Encoder +-->---+ SRS/CDN Network +--->---+ Player  |
+---------+      +-----------------+       +---------+

The architecture of Encoder(publish/push stream) and Player(play/pull stream):

+-------------------------------------------+
|           Device(Out/In YUV/PCM)          |
+-------------------------------------------+
|   Codec(YUV/PCM to/from H.264/AAC stream) |
+-------------------------------------------+
|   Muxer(H.264/AAC to/from FLV/MP4/HLS)    |
+-------------------------------------------+
|          Transport(RTMP/HTTP/UDP)         |
+-------------------------------------------+

There are two different types of codec, one is hardware encoder, and the other is software encoder. Hardware encoder is inside the mobile device; while software encoder is FFMPEG/libx264. The performance of hardware encoder is high; while there are more available parameters expored in software encoder.

YASEA

YASEA is advanced SRS-SEA. YASEA can be used in product, while SRS-SEA is only experimental.

The basic features of encoder:

Android iOS Codec Transport Hardware
Encoder
Software
Encoder
Lowlatency
YES NO H.264+AAC RTMP/FLV YES YES NO

The advanced features of encoder:

美颜 横竖屏 摄像头
切换
对焦 动态码率 水印 贴纸
YES NO NO NO NO NO NO

Other features of encoder:

  • 回声抑制。

Requirement: Android SDK level 16+, Android 4.1, the JELLY_BEAN

All SDKs are listed bellow:

EXOPlayer

The EXOPlayer is a Android player which support HTTP-FLV and HLS.

The basic features of player:

Android iOS Codec Transport Lowlatency
YES NO H.264+AAC FLV/HLS YES

Using encoder YASEA and player EXOPlayer, we can make a Android solution for live streaming around 3s latency.

LFLiveKit

LFLiveKit is a encoder for iOS from LaiFeng.

Remark: The lf.swift project is a iOS library, but seems not popular as LFLiveKit.

IJKPlayer

ijkplayer is a player from bilibili, for both Android and iOS.

LIBRTMP

The LIBRTMP or SRS-LIBRTMP only provides transport over RTMP.

The SRS-LIBRTMP is exported by SRS, please read WIKI

PC

Although the number of PC users are smaller, there are still some use scenarios for OBS or OBS Studio.

Remark: For publishing by OBS, the Stream Key should be filled by stream name.

OBS

OBS

The players for PC platform, either Flash(RTMP, FLV, HLS) or MSE(H5, DASH, videojs, FLV).

Low Latency

The low latency around 1s workflow is verified:

+-----------------+         +-------+         +-----------+
| OBS/FMLE/FFMPEG +---->----+  SRS  +----->---+   Flash   +
+-----------------+         +-------+         +-----------+

But when encoder and player replace by Android/iOS, none of SDK consider about the latency, what a fuck!

NOT Open Source Version

The bellow are some project, they are not open-source, but provide libraries or partial-open-source. Please read wiki.

Winlin 2017.4

Welcome to SRS wiki!

SRS 5.0 wiki

Please select your language:

SRS 4.0 wiki

Please select your language:

SRS 3.0 wiki

Please select your language:

SRS 2.0 wiki

Please select your language:

SRS 1.0 wiki

Please select your language:

Clone this wiki locally