zoukankan      html  css  js  c++  java
  • 【项目一 · 直播】 ☞ 3. 推流直播

    一、推流

    1. 概念

      推流,就是将采集到的音频,视频数据通过流媒体协议发送到流媒体服务器。

    2. 推流过程

    • 推流前的工作:采集,处理,编码压缩

        

    • 推流中做的工作: 封装,上传

        

    3. 推流框架介绍

    • LFLiveKit (推荐):由Adobe公司开发。框架已经实现了 后台录制、美颜功能,支持H264(视频编码)、AAC(音频编码)编码,支持RTMP传输协议,动态改变速率,弱网丢帧(网络慢的情况下,为了保证视频通畅,通常采用丢帧处理)等。
    • LFLiveKit库里已经集成GPUImage框架用于美颜功能,GPUImage基于OpenGl开发,纯OC语言框架,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达125种常见的滤镜效果。
    • LiveVideoCoreSDK : 实现了美颜直播和滤镜功能,我们只要填写RTMP服务地址,直接就可以进行推流啦。
    • PLCameraStreamingKit: 也是一个不错的 RTMP 直播推流 SDK。

      

    PS: 另外其实好多第三方的集成也很好用,可参考

    二、LFLiveKit框架的使用

     1 // 直播会话
     2 - (LFLiveSession*)session {
     3     if (!_session) {
     4         _session = [[LFLiveSession alloc] initWithAudioConfiguration:[LFLiveAudioConfiguration defaultConfiguration] videoConfiguration:[LFLiveVideoConfiguration defaultConfiguration]];
     5         _session.preView = self;
     6         _session.delegate = self;
     7     }
     8     return _session;
     9 }
    10 // 开始直播
    11 - (void)startLive {    
    12     LFLiveStreamInfo *streamInfo = [LFLiveStreamInfo new];
    13     streamInfo.url = @"your server rtmp url";
    14     [self.session startLive:streamInfo];
    15 }
    16 // 结束直播
    17 - (void)stopLive {
    18     [self.session stopLive];
    19 }
    20 
    21 //MARK: - CallBack:
    22 - (void)liveSession:(nullable LFLiveSession *)session liveStateDidChange: (LFLiveState)state;
    23 - (void)liveSession:(nullable LFLiveSession *)session debugInfo:(nullable LFLiveDebug*)debugInfo;
    24 - (void)liveSession:(nullable LFLiveSession*)session errorCode:(LFLiveSocketErrorCode)errorCode;

      

  • 相关阅读:
    传统工业制造商Opto 22宣布加入Linux基金会
    Android Stack
    An Overview of the Android Architecture (Android Studio)
    基于嵌入式操作系统的物联网安全
    什么是雾计算?它与云计算有什么区别?
    《速度与激情8》中的信息安全技术
    专利驳回的三大基本原因
    专利
    【习题 4-2 Uva201】Squares
    【习题4-1 Uva1589】Xiangqi
  • 原文地址:https://www.cnblogs.com/bossren/p/6658807.html
Copyright © 2011-2022 走看看