美文网首页直播
ios实现简单直播

ios实现简单直播

作者: 孙启双 | 来源:发表于2017-05-31 10:02 被阅读34次

    本文模仿映客直播,简单实现了直播功能.

    demo地址:https://github.com/sunqishuang/LikeFayerLiveAPP

    直播的第三方有很多.如果公司有钱,可以买现成的服务.本文使用的都是免费的第三方框架.

    直播的理论传输过程:采集,处理,编码,封包,推流,传输,转码,分发,拉流,解码,播放.
    我们通过摄像头采集数据.经过处理,然后将处理的数据推送到服务器.当一个用户在打开主播的直播时,用户端就是去请求这个服务器,获取到服务器中的数据,然后展示播放.

    主播端给服务器的传输协议:RTMP
    服务器给观众端的传输协议:RTMP或者HLS

    RTMP:基于TCP的长链接,每个时刻的数据,收到后立即转发,延时1-3秒

    HLS:基于HTTP的短链接,集合一段时间数据,生成1秒的切片文件,更新m3u8,延迟大于10秒

    所里拉流端如果使用RMTP传输协议,一段就没法缓存的.使用HLS协议是可以缓存的(服务器对结束的主播数据,进行切片处理,同时可以保存).

    说了那么多废话,我就来直接说大家关心的两个点:拉流,推流.

    1.拉流
    拉流说白了就是客户端要做的.哔哩哔哩为我们提供了免费的视频直播框架:基于FFMPEG的IJKPlayer.(如果你不想用,可得自己花时间研究ffmpeg)

    集成IJKPlayer:http://www.jianshu.com/p/1f06b27b3ac0 (这位大神写得很详细了,我就不重复了)

    在要播放的位置,初始化IJKPlayer就好:

    #pragma mark ---------------------------------------------- 初始化配置Player
    - (void)configPlayer{
        
        IJKFFOptions *options = [IJKFFOptions optionsByDefault];
        
        self.player = [[IJKFFMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:_liveModel.stream_addr] withOptions:options];
        
        self.player.view.frame = self.view.bounds;
        self.player.shouldAutoplay = YES;
        
        [self.view addSubview:self.player.view];
    }
    

    只要在初始化的时候,直接传入拉流地址,就可以直接播放了.

    在viewwillappear中

    //准备播放
        [self.player prepareToPlay];
    

    在viewWillDisappear

    //结束播放
        [self.player shutdown];
    

    2.推流
    推流就是主播端上传采集的数据.集成LFLiveKit就行.
    直接用cocoapods集成就好 :pod 'LFLiveKit'

    先去github中下载一个LFLiveKit的demo.
    找到里面的LFLivePreview类,直接是采集数据的View,在需要的控制器空,添加上一个view,就行了.当然里面的推流地址要更改.

    相关文章

      网友评论

        本文标题:ios实现简单直播

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