pili-engineering / PLCameraStreamingKit

PLCameraStreamingKit 是 Pili 直播 SDK 的 iOS 推流端,是带有采集模块老版本 SDK。如果是新用户接入,建议使用 PLMediaStreamingKit。该版本支持 RTMP 推流,h.264 和 AAC 编码,硬编软编支持。具有丰富的数据和状态回调,方便用户根据自己的业务定制化开发。具有直播场景下的重要功能,如:美颜、背景音乐、水印等功能。
https://github.com/pili-engineering/PLMediaStreamingKit
Apache License 2.0
1.03k stars 257 forks source link

PLCameraStreamingSessionDelegate not called in swift #158

Open danlniel opened 8 years ago

danlniel commented 8 years ago
let permissionBlock = {() -> Void in
            dispatch_async(self.sessionQueue!, {() -> Void in
                let videoCaptureConfiguration: PLVideoCaptureConfiguration = self.videoCaptureConfigurations!.last!
                let audioCaptureConfiguration: PLAudioCaptureConfiguration = PLAudioCaptureConfiguration.defaultConfiguration()
                // 视频编码配置
                let videoStreamingConfiguration: PLVideoStreamingConfiguration = self.videoStreamingConfigurations!.last!
                // 音频编码配置
                let audioStreamingConfiguration: PLAudioStreamingConfiguration = PLAudioStreamingConfiguration.defaultConfiguration()

                let orientation:AVCaptureVideoOrientation? = AVCaptureVideoOrientation(rawValue: UIDevice.currentDevice().orientation.rawValue)

                // 推流 session
                self.session = PLCameraStreamingSession(videoCaptureConfiguration: videoCaptureConfiguration, audioCaptureConfiguration: audioCaptureConfiguration, videoStreamingConfiguration: videoStreamingConfiguration, audioStreamingConfiguration: audioStreamingConfiguration, stream: stream, videoOrientation: orientation!)
                self.session!.delegate = self
                self.session!.bufferDelegate = self
                //            UIImage *waterMark = [UIImage imageNamed:@"qiniu.png"];
                //            [self.session setWaterMarkWithImage:waterMark position:CGPointMake(100, 300)];
                dispatch_async(dispatch_get_main_queue(), {() -> Void in
                    let previewView: UIView = self.session!.previewView
                    previewView.autoresizingMask = [.FlexibleHeight, .FlexibleWidth]
                    self.view!.insertSubview(previewView, atIndex: 0)
                    //                self.zoomSlider.minimumValue = 1;
                    //                self.zoomSlider.maximumValue = MIN(5, self.session.videoActiveFormat.videoMaxZoomFactor);
                    let log: String = String(format: "Zoom Range: [1..%.0f]", self.session!.videoActiveFormat.videoMaxZoomFactor)
                    print("\(log)")
                    //                self.textView.text = [NSString stringWithFormat:@"%@\%@", self.textView.text, log];
                    //                self.textView.text = [NSString stringWithFormat:@"%@\%@", self.textView.text, log];
                })
            })
            //        show countdown
//            self.performSelector(#selector(self.showCountdown), withObject: nil, afterDelay: 3.0)
        }
        let noAccessBlock = {() -> Void in
            Util.showAlertTitle(Constants.APP_NAME, message: "No Access")
        }
        switch PLCameraStreamingSession.cameraAuthorizationStatus() {
        case .Authorized:
            permissionBlock()
        case .NotDetermined:
            PLCameraStreamingSession.requestCameraAccessWithCompletionHandler({(granted: Bool) -> Void in
                granted ? permissionBlock() : noAccessBlock()
            })
        default:
            noAccessBlock()
        }

 func cameraStreamingSession(session: PLCameraStreamingSession!, streamStatusDidUpdate status: PLStreamStatus!) {
}