美文网首页
iOS开发swift -- AlivcLiveVideo阿里云直

iOS开发swift -- AlivcLiveVideo阿里云直

作者: Hayley__ | 来源:发表于2017-08-15 10:54 被阅读230次

    一 AlivcLiveVideo简介

    视频直播服务(ApsaraVideo Live)是基于领先的内容接入与分发网络和大规模分布式实时转码技术打造的音视频直播平台,提供便捷接入、高清流畅、低延迟、高并发的音视频直播服务。
    相关链接

    二 sdk集成

    获取推流SDK:下载地址

    其中SDK包含以下文件:
    demo: 调用 SDK 的示例工程,开发者可参考demo代码进行开发集成
    lib: SDK开发包,包含framework文件,需要在工程中进行引用
    doc: 相关接入文档。
    拖拽 sdk 文件夹到自己的 Xcode 项目中,勾选 Copy items if needed,点击 Finish。
    

    三 相关配置

    打开项目的 app target,在 Build Phases 中的 Link Binary With Libraries 添加以下依赖库:
    -  libz.tbd
    -  VideoToolbox.framework  
    -  AudioToolbox.framework
    -  libstdc++.tbd 
    -  SystemConfiguration.framework 
    -  CoreTelephony.framework
    

    四 代码示例

        func creatSession()  {
            //初始化 config 配置类
            configuration = AlivcLConfiguration.init()
            //设置推流地址
            configuration.url = "rtmp://push.live.t.zmengzhu.com/mz/3673?vhost=live.t.zmengzhu.com&auth_key=1502804297-0-0-1c4d3a9714198f09e7780936fc688414";
            //设置最大码率
            configuration.videoMaxBitRate = 1500 * 1000;
            //设置当前视频码率
            configuration.videoBitRate = 600 * 1000;
            //设置最小码率
            configuration.videoMinBitRate = 400 * 1000;
            //设置视频帧率
            configuration.fps = 25;
            //设置音频码率
            configuration.audioBitRate = 64 * 1000;
            //设置直播分辨率
            configuration.videoSize = CGSize.init(width: 360, height: 640)
            //设置横竖屏
            configuration.screenOrientation = .AlivcLiveScreenVertical;
            //设置摄像头采集质量
            configuration.preset = AVCaptureSessionPresetiFrame1280x720;
            //设置前置摄像头或后置摄像头
            configuration.position = .back;
            //设置水印图片
            configuration.waterMaskImage = UIImage.init(named: "订阅选中")
            //设置水印位置
            configuration.waterMaskLocation = .AlivcLiveWaterMaskLocationLeftTop
            //设置水印相对x边框距离
            configuration.waterMaskMarginX = 10;
            //设置水印相对y边框距离
            configuration.waterMaskMarginY = 70;
            //设置重连超时时长
            configuration.reconnectTimeout = 5;
            
            let captureSession = AVCaptureSession.init()
            if captureSession.canSetSessionPreset(AVCaptureSessionPreset1280x720) {
                configuration.preset = AVCaptureSessionPreset1280x720
            }else if captureSession.canSetSessionPreset(AVCaptureSessionPresetiFrame960x540)
            {
                configuration.preset = AVCaptureSessionPresetiFrame960x540
            }else
            {
                configuration.preset = AVCaptureSessionPreset640x480
            }
            
            liveSession = AlivcLiveSession.init(configuration: configuration)
            liveSession.delegate = self
            liveSession.alivcLiveVideoStartPreview()
            view.insertSubview(self.liveSession.previewView(), at: 0)
            
            self.liveSession.previewView().snp.makeConstraints { (make) in
                make.top.equalTo(view).offset(80)
                make.bottom.equalTo(view).offset(-50)
                make.left.right.equalTo(view)
            }
            
            let button = UIButton.init(type: .custom)
            button.setTitle(NSLocalizedString("Welcome", comment: "Welcome"), for: .normal)
            button.setTitleColor(UIColor.red, for: .normal)
            button.addTarget(self, action: #selector(buttonclick), for: .touchUpInside)
            view.addSubview(button)
            
            button.snp.makeConstraints { (make) in
                make.centerX.centerY.equalTo(view)
            }
            
        }
    
        func buttonclick()
        {
            self.liveSession.alivcLiveVideoConnectServer()
        }
        
        // MARK: - AlivcLiveSessionDelegate
        //required
        func alivcLiveVideoLiveSession(_ session: AlivcLiveSession!, error: Error!) {
            //推流错误
        }
        func alivcLiveVideoLiveSessionNetworkSlow(_ session: AlivcLiveSession!) {
            //网络很慢 不建议直播
        }
        
        //optional
        func alivcLiveVideoLiveSessionConnectSuccess(_ session: AlivcLiveSession!) {
            //推流链接成功
        }
        func alivcLiveVideoOpenAudioSuccess(_ session: AlivcLiveSession!) {
            //麦克风获取成功
        }
        func alivcLiveVideoOpenVideoSuccess(_ session: AlivcLiveSession!) {
            //摄像头获取成功
        }
        func alivcLiveVideoLiveSession(_ session: AlivcLiveSession!, openAudioError error: Error!) {
            //音频打开失败
        }
        func alivcLiveVideoLiveSession(_ session: AlivcLiveSession!, openVideoError error: Error!) {
            //视频设备打开失败
        }
        func alivcLiveVideoLiveSession(_ session: AlivcLiveSession!, encodeAudioError error: Error!) {
            //音频转码失败
        }
        func alivcLiveVideoLiveSession(_ session: AlivcLiveSession!, encodeVideoError error: Error!) {
            //视频转码失败
        }
        func alivcLiveVideoReconnectTimeout(_ session: AlivcLiveSession!, error: Error!) {
            //重连超时
        }
    

    相关文章

      网友评论

          本文标题:iOS开发swift -- AlivcLiveVideo阿里云直

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