常见直播协议及霹雳云直播介绍

常见直播协议的介绍

国内常见公开的直播协议有几个:RTMP、HLS、HDL(HTTP-FLV)、RTP,我们来逐一介绍。

RTMP协议:

即Real Time Messaging Protocol,是Adobe的专利协议,现在大部分国外的CDN已不支持。在国内流行度很高。原因有几个方面:

1、开源软件和开源库的支持稳定完整。如斗鱼主播常用的OBS软件,开源的librtmp库,服务端有nginx-rtmp插件。

2、播放端安装率高。只要浏览器支持FlashPlayer就能非常简易的播放RTMP的直播,协议详解可以Google了解。相对其他协议而言,RTMP协议初次建立连接的时候握手过程过于复杂(底层基于TCP,这里说的是RTMP协议本身的交互),视不同的网络状况会带来给首开带来100ms以上的延迟。基于RTMP的直播一般内容延迟在2~5秒。

HDL(HTTP-FLV)协议:

即使用HTTP协议流式的传输媒体内容。相对于RTMP,HTTP更简单和广为人知,而且不担心被Adobe的专利绑架。内容延迟同样可以做到2~5秒,打开速度更快,因为HTTP本身没有复杂的状态交互。所以从延迟角度来看,HDL(HTTP-FLV)要优于RTMP。

HLS 协议:

即Http Live Streaming,是由苹果提出基于HTTP的流媒体传输协议。HLS有一个非常大的优点:HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信等转发分享,不需要安装任何独立的APP,有浏览器即可,所以流行度很高。社交直播APP,HLS可以说是刚需,下来我们分析下其原理 。

基于HLS的直播流URL是一个m3u8的文件,里面包含了最近若干个小视频TS(一种视频封装格式,这里就不扩展介绍)文件,如 http://www.ucloud.cn/helloworld.m3u8 是一个直播流留链接,其内容如下:
image

RTP协议:

即Real-time Transport Protocol,用于Internet上针对多媒体数据流的一种传输层协议。
实际应用场景下经常需要RTCP(RTP Control Protocol)配合来使用,可以简单理解为RTCP传输交互控制的信令,RTP传输实际的媒体数据。

霹雳云直播工作流模型

  1. Client (iOS/Android/PC/Camera) 向 Server (业务逻辑服务器) 请求推流授权

  2. Server 颁发带授权信息的 Stream 给 Client

  3. Client 通过 RTMP 推流 给 Pili Streaming Cloud

  4. Client 向 Server 请求播放授权

  5. Server 向 Client 颁发播放地址

  6. Client 调用 播放器 SDK 打开播放地址进行播放

三方交互的业务逻辑可以借鉴如下示意图进行理解:

image

Android端SDK

播放器 SDK

PLDroidPlayer 是一个适用于 Android 的音视频播放器 SDK,可高度定制化和二次开发,特色是支持 RTMP 和 HLS 直播流媒体、以及常见音视频文件(如 MP4、M4A )播放。

功能特性

  1. 基于 ijkplayer ( based on ffplay )
  2. Android Min API 9
  3. 支持 RTMP, HLS 协议
  4. 支持 ARMv7a
  5. 支持 MediaCodec 硬解码
  6. 提供 VideoView 控件
  7. 可定制化的 MediaController
  8. 支持 seekTo()
  9. 支持获取当前播放时长 getDuration()
  10. 支持获取当前播放的位置 getCurrentPosition()
  11. 支持音量控制 setVolume()
  12. 提供如下接口:
  13. OnPreparedListener
  14. OnCompletionListener
  15. OnErrorListener
  16. OnInfoListener

RTMP 直播推流 SDK

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

功能特性

  1. 支持 MediaCodec 硬编码
  2. 支持 AAC 音频编码
  3. 支持 H264 视频编码
  4. 内置生成安全的 RTMP 推流地址
  5. 支持 RTMP 协议推流
  6. 支持 ARMv7a
  7. Android Min API 18
  8. 支持前后置摄像头,以及动态切换
  9. 支持自动对焦
  10. 支持闪光灯操作
  11. 支持纯音频推流,以及后台运行