常见问题

在直播过程中调用resetRecorder重新设置AVCaptureDevicePosition即可,AVCaptureDevicePositionFront表示前置摄像头,AVCaptureDevicePositionBack表示后置摄像头。

分辨率与码流的对应关系为:分辨率设置为width x height 则码流取值范围为 width/2(Kbit)至width x 1.5(Kbit)之间,一般取为width(Kbit)即可,具体根据网络带宽自行调整。通过setVideoBitrate进行设置,注意该参数只有iOS8 硬编才生效。

添加三个库libbz.tbd、libbz2.tbd和libiconv.tbd即可。如果使用老版本的SDK请将XpaiInterface.h里面的resArray数组定义删除。

  • 日志:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' Can't add a nil AVCaptureInput'
  • 请确认手机允许该程序访问相机,具体步骤 设置->隐私->相机->找到该程序,打开相机访问权限即可

  • 第一步 报错日志为 ld: '/Users/phe/work/ios_workspace/TestSdk/TestSdk/libXpaiLib.a(XpaiPacket.o)' does not contain bitcode. 解决办法:在Build Settings->Enable Bitcode 设置为NO
  • 第二步 添加必须的库 AssetsLibrary.framework、AudioToolbox.framework、VideoToolbox.framework、 Security.framework、libz.tbd、libiconv.tbd和libbz2.tbd

  • 手势操作参考代码如下:

    -(void)zoomSize:(UIPinchGestureRecognizer *)pinch {
    
            static CGFloat pinchScale;
            if (pinch.scale <= 1.01) {
                pinchScale = 0;
            }
    
            if (pinch.scale > 1 && pinch.scale > pinchScale ) {
                zoomNum = zoomNum + 0.025;
            }else if (pinch.scale < 1 || pinch.scale < pinchScale){
                zoomNum = zoomNum - 0.025;
            }
            if (zoomNum  > 4) {
                zoomNum = 4;
            }else if( zoomNum  < 1){
                zoomNum = 1;
            }
            _zoomSlider.value = zoomNum;
            pinchScale = pinch.scale;
    
            AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
            [device lockForConfiguration:nil];
            [device setVideoZoomFactor:zoomNum];
            [device unlockForConfiguration];
    }
  • 使用slider参考代码如下:

    -(void)changeZoom:(UISlider *)slider {
    
            AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
            [device lockForConfiguration:nil];
            [device setVideoZoomFactor:slider.value];
            [device unlockForConfiguration];
            zoomNum = slider.value;    
    }

在非ARC环境下直接调用[player stop]即可,
在ARC环境下调用[player stop];
              player = nil;
              playview = nil;

  • 使用 initRecorder方法,将captureVideoOrientation 参数设置为 AVCaptureVideoOrientationPortrait。
  • 初始化 AVCaptureVideoPreviewLayer时,将 _PlayLayer.connection.videoOrientation 属性设置为AVCaptureVideoOrientationPortrait ,竖屏显示画面。
  • 重置Recorder,使用resetRecorder方法时,可通过captureVideoOrientation参数更改取景方向 竖屏时将参数设置为AVCaptureVideoOrientationPortrait即可。
  • 当软编码状态下 竖屏录制仅支持192x144及640x480两种。