-
-
Notifications
You must be signed in to change notification settings - Fork 5.4k
v3_EN_ClientSDK
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.
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.
ijkplayer is a player from bilibili, for both Android and iOS.
FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video.
The LIBRTMP or SRS-LIBRTMP only provides transport over RTMP.
LFLiveKit is a encoder for iOS from LaiFeng.
Remark: The lf.swift project is a iOS library, but seems not popular as LFLiveKit.
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:
- Android Encoder: YASEA
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.
The players for PC platform, either Flash(RTMP, FLV, HLS) or MSE(H5, DASH, videojs, FLV).
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!
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!
Please select your language:
Please select your language:
Please select your language:
Please select your language:
Please select your language: