阿里雲視頻直播系列文章-iOS推流SDK的使用


前期准備

  • Mac搭建nginx+rtmp服務器

如何開發出一款仿映客直播APP項目實踐篇-服務器搭建+推流

關於iOS推流SDK

SDK集成

  • 拖拽sdk文件夾到自己的Xcode項目中。

    iOS推流SDK
  • 添加依賴庫
    • libz.tbd
    • VideoToolbox.framework
    • AudioToolbox.framework
    • libstdc++.tbd
    • SystemConfiguration.framework
    • CoreTelephony.framework
  • iOS10適配說明

    推流SDK需要獲取iOS設備的攝像頭和麥克風權限,需要在開發項目的plist文件中添加如下權限配置

     Privacy - Camera Usage Description Privacy - Microphone Usage Description

AlivcLiveVideo

里面包含配置類AlivcLConfiguration.h和直播會話類AlivcLiveSession.h

  • 配置類

    攝像頭方向,視頻大小,連接狀態,當前幀數,推流地址,水印位置,最大碼率,最小碼率,音頻碼率,幀率,手機方向,重連超時時長,調試信息等配置

  • 直播會話類

    美顏,閃光燈,攝像頭方向,靜音,開始直播,停止直播,以及AlivcLiveSession代理方法

開發步驟

在需要直播功能的控制器頭部導入#import <AlivcLiveVideo/AlivcLiveVideo.h>,並設置代理AlivcLiveSessionDelegate使用用媒體推流器SDK的調用順序為

  • 設置直播參數
    //1.初始化config配置類 self.configuration = [[AlivcLConfiguration alloc]init]; //2. 設置推流地址 self.configuration.url = self.pushUrl; //3. 設置最大碼率 /*! * 最大碼率,網速變化的時候會根據這個值來提供建議碼率 * 默認 1500 * 1000 */ self.configuration.videoMaxBitRate = 1500 * 1000; //4. 設置當前視頻碼率 /*! * 默認碼率,在最大碼率和最小碼率之間 * 默認 600 * 1000 */ self.configuration.videoBitRate = 600 * 1000; //5. 設置最小碼率 /*! * 默認碼率,在最大碼率和最小碼率之間 * 默認 600 * 1000 */ self.configuration.videoMinBitRate = 400 * 1000; //6. 設置音頻碼率 /*! * 音頻碼率 * 默認 64 * 1000 */ self.configuration.audioBitRate = 64 * 1000; //7. 設置直播分辨率 self.configuration.videoSize = CGSizeMake(360, 640); //8. 設置橫屏or豎屏 默認豎屏 self.configuration.screenOrientation = AlivcLiveScreenVertical; //9. 設置幀率 default 20 self.configuration.fps = 20; //10. 設置攝像頭采集質量 self.configuration.preset = AVCaptureSessionPresetiFrame1280x720; //11. 設置前置攝像頭或后置攝像頭 self.configuration.position = AVCaptureDevicePositionBack; //12.設置水印圖片 默認無水印 self.configuration.waterMaskImage = [UIImage imageNamed:@"watermask"]; //13.設置水印位置 self.configuration.waterMaskLocation = 1; //14.設置水印相對x邊框距離 self.configuration.waterMaskMarginX = 10; //15.設置水印相對y邊框距離 self.configuration.waterMaskMarginY = 10; //16.設置重連超時時長 self.configuration.reconnectTimeout = 5;
  • 設置直播會話
    //1. 初始化liveSession類 self.liveSession = [[AlivcLiveSession alloc]initWithConfiguration:self.configuration]; //2. 設置session代理 self.liveSession.delegate = self; //3. 開啟直播預覽 [self.liveSession alivcLiveVideoStartPreview]; //4. 推流連接 [self.liveSession alivcLiveVideoConnectServer]; //5. 非常重要 dispatch_async(dispatch_get_main_queue(), ^{ [self.view insertSubview:[self.liveSession previewView] atIndex:0]; });
  • 必須實現的代理方法
/*! * 推流錯誤 */ - (void)alivcLiveVideoLiveSession:(AlivcLiveSession *)session error:(NSError *)error { } /*! * 網絡很慢,已經不建議直播 */ - (void)alivcLiveVideoLiveSessionNetworkSlow:(AlivcLiveSession *)session { }
  • 其他的代理方法可以根據自己的需求實現

完成上述的代碼就可以查看推流效果了,有3-4秒的延遲


推流預覽


作者:看我的大白眼
鏈接:http://www.jianshu.com/p/b1dd29c213ce
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM