RTMP,Real Time Messaging Protocol(实时消息传输协议)
主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信
HLS,HTTP Live Streaming(缩写是 HLS)
是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。主要用于PC和Apple终端的音视频服务
源站
该配置项为可访问的网络地址,可以直接填 IP 地址也可以填写域名地址,现不支持多IP 。如果是域名地址,那么 CDN 在回源时会对该域名地址进行 DNS 解析,然后通过解析出来的 IP 地址再进行访问,因此若解析失败也会导致无法正常回源。
输出协议
直播播放地址
RTMP 格式:rtmp://push.domain.com/接入点/流名
FLV 格式:rtmp://push.domain.com/接入点/流名.flv
M3U8 格式:rtmp://push.domain.com/接入点/流名.m3u8
------------------------------------------
首先得采集,然后转码,然后再推流到服务器
熟悉sdk接口调用,细心看说明
采集的就是用的系统的相机,AVCaptureSession 采集
采集的数据回调:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
CMSampleBufferRef里面是数据
/// @abstract 获取到摄像头原数据时的回调, 便于开发者做滤镜等处理
- (CVPixelBufferRef)cameraStreamingSession:(PLCameraStreamingSession *)session cameraSourceDidGetPixelBuffer:(CVPixelBufferRef)pixelBuffer;
------------------------------------------
1. 推流域名:用于推送直播流的域名,长度小于 60 个字符,支持泛域名绑定,比如:*.yourdomain.com
2. 播放域名:用于播放直播流的域名,默认支持 RTMP,HLS 和 HTTP-FLV;推流域名、播放域名共计最多可绑定个域名,支持泛域名,所绑定的域名需要备案;
3. 接入点:支持1-60位英文字符和数字,如:rtmp://push.example.com/{接入点}/{流名},该项可不填,为空时表示,可以使用任意的接入点。
接入点:live
推流域名:push.example.com
播放域名:pull.example.com
则推流地址:rtmp:// push.example.com /live/streamid
则 rtmp 播放地址:rtmp://pull.example.com/live/ streamid
hls 播放地址:http:// pull.example.com/live/ streamid.m3u8
flv 播放地址:http:// pull.example.com/live/ streamid.flv
直播播放地址
RTMP 格式:rtmp://push.domain.com/接入点/流名
FLV 格式:rtmp://push.domain.com/接入点/流名.flv
M3U8 格式:rtmp://push.domain.com/接入点/流名.m3u8
RTMP,HTTP-FLV 和 HLS 协议的流转码支持 12 种转码模板和客户自定义转码配置
rtmp://fengniushow.com/zhibo/流名
rtmp://fengniushow.cn/live/ 播放
push.fengniushow.com
rtmp://pull.fengniushow.com/zhibo play
rtmp://push.fengniushow.com/zhibo record
------------------------------------------
测试效果:延时3秒,推流视频关键帧间隔30较为不卡顿
采集配置:videoFrameRate 30 视频数据的帧率
sessionPreset AVCaptureSessionPresetiFrame960x540
previewMirrorFrontFacing yes 前置预览是否开启镜像
previewMirrorRearFacing no 后置预览是否开启镜像
streamMirrorFrontFacing yes 推的流是否开启镜像
streamMirrorRearFacing no 推的流是否开启镜像
cameraPosition AVCaptureDevicePositionFront
videoOrientation AVCaptureVideoOrientationPortrait
推流配置: videoSize 编码分辨率 CGSizeMake(480 , 640)
expectedSourceVideoFrameRate 预期采集源视频码率 30
videoMaxKeyframeInterval 视频最大关键帧间隔 90
averageVideoBitRate 平均视频码率 800 * 1000
videoProfileLevel H.264 编码时的 profile level AVVideoProfileLevelH264Baseline31
videoSize,这个参数影响的是视频编码时的分辨率,而非摄像头采集到数据的预览大小,传递给编码器的图像尺寸与此尺寸不同时,会按照 AVVideoScalingModeResizeAspectFill对图像做剪切,从而确保图像不会出现压缩的现象
H.264 编码时使用的 Profile Level,即videoProfileLevel
视频的帧率,视频的编码帧率,fps,每秒传输帧数(Frames Per Second)
视频编码关键帧最大间隔(GOP)
视频编码码率,bps(Bits per Second)
当你不明白每个具体参数是什么含义前,你可以使用 defaultConfiguration 或者通过指定分辨率和推流质量生成一个 config.
rtmp://pili-live-rtmp.fengniushow.com/livelivelive/57beb3b5b1d1ff8fed001525