iOS直播App(推流篇)

首先你要知道推流也是有协议的:

常见的流媒体协议有:

1.RTMP:Real Time Streaming Protocol, Adobe开发的协议

1.1.基于TCP的应用层协议
1.2实时性在3秒左右
1.3.支持加密:RTMPE, RTMPS为加密协议
1.4.稳定性高
1.5.客户端和服务器要经过握手,来建立基于传输层链接之上的RTMP链接,传输控制信息。
1.6.RTMP协议会对数据进行自己的格式化,格式化之后的数据叫RTMP Message

2.HLS:HTTP Live Streaming 是苹果公司实现的

2.1.基于HTTP的流媒体协议。
2.2.HLS比RTMP有较高的延迟。
2.3.HLS传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。
2.3.直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。

我们大多会采用RTMP进行推流, 因为该协议实时性非常的高, 但是将Message封装成Trunk的过程非常麻烦, 所有我们这里直接介绍框架实现推流:

Swift框架: lf.swift
OC框架: LFLiveKit

OC框架代码:

    - (LFLiveSession*)session {
        if (!_session) {
            _session = [[LFLiveSession alloc] initWithAudioConfiguration:  [LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:  [LFLiveVideoConfiguration defaultConfiguration]];
            _session.preView = self.view;
            _session.delegate = self;
        }
        return _session;
    }

    - (IBAction)startLive {
        LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new];
        streamInfo.url = @"rtmp://47.92.137.30/live/demo";
        self.session.running = YES;
        [self.session startLive:streamInfo];
    }

你可能感兴趣的:(iOS直播App(推流篇))