美文网首页
iOS直播App(推流篇)

iOS直播App(推流篇)

作者: 攻克乃还_ | 来源:发表于2017-08-17 20:00 被阅读79次

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

    常见的流媒体协议有:

    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(推流篇)

          本文链接:https://www.haomeiwen.com/subject/inenrxtx.html